(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 、在后台的“内容维护”的“搜索关键词管理”里,点“文档关键字维护”,然后添加或修改关键字和链接地址的对应关系.
所以,下面就提供一个修改方法,改成只要总表里有关键字链接的,就把文章里相应的关键字替换链接,无须每篇文章进行关键词定义。
注意:更改之后,如果关键字总表比较大(例如总表关键字数量超过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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28