解决织梦DedeCMS自动关键词重复嵌套问题

织梦 Dedecms 后台的关键词维护认的情况是字数少的词优先于字数多的词,比如我们有两个这样的词:创业、创业方向,第二个词包含了第一个词,在文章中如果出现“创业方向”这个词,认情况下只会给创业两个字添加关键词超链接,而不是整个词,那么我们怎么样才能实现字数多的词优先于字数少的词呢?下面就告诉大家具体的解决方法

我们找到并打开/include/arc.archives.class.PHP 文件,在里面找到如下代码

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
$string = str_replace('', '', $string);

找到后在其下面添加下面一行代码

uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));

最后变成下面的样子:

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
$string = str_replace('', '', $string);
uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));

替换完成后保存即可,然后生成一下文章内容试试。如果你用的是最新版的 Dedecms,那么可能找不到上面的代码

最新版织梦 Dedecms 查找以下代码

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
if (version_compare(PHP_VERSION, '5.5.0', '>='))
{
$string = $string[0];
$pre = $pre[0];
}
$string = str_replace('', '', $string);

在这代码的后面加上前面的语句,变成:

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
if (version_compare(PHP_VERSION, '5.5.0', '>='))
{
$string = $string[0];
$pre = $pre[0];
}
$string = str_replace('', '', $string);
uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));

这样修改的原理是优先给较短的关键词添加链接,而后再给较长的关键词添加链接,从而达到防止嵌套的问题。

PS:修改系统文件之前最好对要修改文件做一下备份,以防出错.

相关文章

织梦模板建站更换logo的操作步骤:1.找到logo图片所在文件位...
织梦更适合企业建站,织梦拥有大量免费的漂亮模版,简单易用...
在织梦中设置404页面的方法1.进入织梦网站后台管理界面,在界...
解决织梦系统漏洞的方法有以下几种1.将data、templets、uplo...
织梦网站漏洞的解决办法:1.删除install安装目录。2.定期进行...
修改织梦建站变默认路径的方法:1.进入织梦cms;2.选择“系统...