DEDECMS 内容中的关键字自动加上链接

比如我在文档关键词维护里添加一个关键词给了链接地址然后我想添加文档之后在浏览的时候内容出现这个关键词并有我给的链接地址请详解或者给个方法我实现之后加分... 比如 我在文档关键词维护里添加一个关键词 给了链接地址 然后我想 添加文档之后在浏览的时候 内容出现这个关键词 并有我给的链接地址 请详解 或者给个方法 我实现之后 加分 展开
 我来答
3610的五只
2011-04-05 · TA获得超过688个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:93.9万
展开全部
1、后台-采集-文档关键词维护 添加关键词及链接

2、后台-系统-核心设置 关键字替换(是/否)使用本功能会影响HTML生成速度: 是

3、后台-系统-其他选项 文档内容同一关键词替换次数(0为全部替换): 设置一个数值 (这里顺便提一下,比如一篇文章含有互相包含关键词,比如dede和dedecms,系统会把后面的dedecms会被dede替代,我的做法是,关键词替换次数设置为1次,然后文档关键词维护那里把dede和dedecms的频率设置成一样,就搞定了。)

修改文件:/include/arc.archives.class.php

查找以下代码:
引用

foreach($kws as $k)
{
$k = trim($k);
if($k!="")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne("select * from #@__keywords where keyword='$k' And rpurl<>'' ");
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
}
$i++;
}
}

将以上代码替换为以下代码:
引用

global $dsql;

$query="SELECT * FROM dede_keywords WHERE rpurl<>'' ORDER BY rank DESC";

$dsql->SetQuery($query);

$dsql->Execute();

while($row = $dsql->GetArray())

{

$key = trim($row['keyword']);

$key_url=trim($row['rpurl']);

$karr[] = $key;

$kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>";

}
爆燃小子
2011-04-02 · TA获得超过140个赞
知道小有建树答主
回答量:560
采纳率:0%
帮助的人:245万
展开全部
1 进入后台,系统,系统基本参数,核心设置,关键字替换(是/否),这里选择“是”。

2 修改文件 /include/arc.archives.class.php ,找到这一段:
以下为引用的内容:
foreach($kws as $k)
{
$k = trim($k);
if($k!=”")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne(“select * from cz_keywords where keyword=’$k’ And rpurl<>” “);
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = “<a href=’{$myrow['rpurl']}’><u>$k</u></a>”;
}
$i++;
}
}
把它替换成:
以下为引用的内容:
global $dsql;
$query=”SELECT * FROM cz_keywords WHERE rpurl<>” ORDER BY rank DESC”;
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = “<a href=’$key_url’ target=’_blank’><u>$key</u></a>”;
}
追问
你认为有用? 我改了没用 再说了 你这都是复制的
追答
好吧 我看下我本机的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w5w4002
2011-04-03 · TA获得超过117个赞
知道答主
回答量:109
采纳率:0%
帮助的人:118万
展开全部
一楼的方法可以 我也用过这个方法 但是提醒下楼主 这样生成速度会减慢很多很多

关键词多了的话生成速度会变成蜗牛速度 如果是动态或者伪静态 读取速度会慢很多

我以前就碰到这样的问题 目前还没解决 如果不嫌弃的话就用1楼这个方法把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxoocn
2011-04-03 · 超过16用户采纳过TA的回答
知道答主
回答量:62
采纳率:25%
帮助的人:27.3万
展开全部
dedecms版本5.6,比如你有三个关键字:我,我们,我们的。可以实现优先匹配长的关键字,同时支持关键字替换。
修改文件 /include/arc.archives.class.php
添加:
function cmp($a, $b)
{
$a=strlen($a);
$b=strlen($b);
if ($a== $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
}

然后修改方法ReplaceKeyword为:function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;global $dsql;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$kws2=array(); //duqiang
$i=0;
$karr = $kaarr = $GLOBALS['replaced'] = array();
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
$query="SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC";
$dsql->SetQuery($query);
$dsql->Execute();
while(uksort($row = $dsql->GetArray(),"cmp"))
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "<a href='$key_url' title='$key' target='_blank'>$key</a>";
$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
$body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
}

$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);

//恢复超链接
$body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
return $body;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
河林之眼
2011-04-04 · TA获得超过262个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:145万
展开全部
首先在系统的性能选项中的“使用关键词关连文章”选择是。然后进入采集》文档关键词维护。后面你应该懂了,再就是别忘了重新生成和更新
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式