+ -
当前位置:首页 → 问答吧 → (DEDE)根据关键字总表 添加文章内关键字链接【附修改方法】

(DEDE)根据关键字总表 添加文章内关键字链接【附修改方法】

时间:2008-12-01

来源:互联网

DEDE自带的关键字替换功能,需要在每篇文章关键字中定义有关键字、并且关键字总表里有关键字和连接地址的关系,才能具备替换功能。这样呢既有它的合理性,但是也许对于某些网站就带来一些麻烦(例如某些公司网站,他们的内容都是关于他们公司的,因此需要定义的关键字连接一般不多,所以不想每次发布文章都重复写文章关键词)

所以,下面就提供一个修改方法,改成只要总表里有关键字链接的,就把文章里相应的关键字替换链接,无须每篇文章进行关键词定义。

注意:更改之后,如果关键字总表比较大(例如总表关键字数量超过20个,这个数量仅为估算,因为还和你系统的硬件设备、文章数量、文章平均长度等有关系,具体可以自行测试),则可能对文章生成速度有较大影响,因此请慎重使用此修改,即使使用此功能,也要确保你的关键字不要太多。


此修改在DEDE5.1 GBK版本内测试通过,修改如下(其他版本可以自行仿照,也许具体所在行数不同),但要确保修改前把涉及文件先行备份(提示:如果是UTF-8的版本,请切记不要用记事本打开源文件,建议用DW或EDITPLUS):

找到include/inc_archives_view.php文件,大约在652行(如果行数不同,请用查找功能,查function ReplaceKeyword ),修改成如下样子: 'function ReplaceKeyword($kw,&$body)
{
global $cfg_cmspath;
$maxkey = 5;
$kws = explode(\" \",trim($kw));
$i=0;
$words = array();
$hrefs = array();

//-----------新修改代码, 根据关键字总列表,替换文章内的关键字链接----------------
$this->dsql->SetQuery(\"Select * from #@__keywords where keyword<>'' And rpurl<>'' \");
$this->dsql->Execute('l');
while($row=$this->dsql->GetArray('l')){
//if($i > $maxkey) break; 控制替换关键字的数量,如果需要请打开,它可以控制一下速度,以防止当关键字过多时文章生成太慢
$words[] = $row['keyword'];
$hrefs[] = $row['rpurl'];
$i++;
}
//--------------新修改代码,根据关键字总列表,替换文章内的关键字链接-----------


/* ------------------------ 旧代码,屏蔽掉 ---------------------
foreach($kws as $k){
$k = trim($k);
if($k!=\"\"){
if($i > $maxkey) break;
$myrow = $this->dsql->GetOne(\"select * from #@__keywords where keyword='\".addslashes($k).\"' And rpurl<>'' \");
if(is_array($myrow)){

$words[] = $k;
$hrefs[] = $myrow['rpurl'];
}
$i++;
}
}
-------------------- 旧代码,屏蔽掉 ----------------- */

$body = highlight($body, $words, $hrefs);

return $body;
}
附加说明,关键字链接替换功能需要设置两个地方:
1、 在后台的“系统管理”的“过滤设置 ”里,设置“关键字替换(是/否)”为“是”;
2 、在后台的“内容维护”的“搜索关键词管理”里,点“文档关键字维护”,然后添加或修改关键字和链接地址的对应关系.

作者: 阿伍   发布时间: 2008-12-01

热门下载

更多