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

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

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

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

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

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

最后变成下面的样子:

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

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

最新版织梦dedecms查找以下代码:

  1.     //高亮专用, 替换多次是可能不能达到最多次
  2.     function _highlight($string, $words, $result, $pre)
  3.     {
  4.         global $cfg_replace_num;
  5.         if (version_compare(PHP_VERSION, '5.5.0', '>='))
  6.         {
  7.             $string = $string[0];
  8.             $pre = $pre[0];
  9.         }
  10.         $string = str_replace('\"', '"', $string);

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

  1.     //高亮专用, 替换多次是可能不能达到最多次
  2.     function _highlight($string, $words, $result, $pre)
  3.     {
  4.         global $cfg_replace_num;
  5.         if (version_compare(PHP_VERSION, '5.5.0', '>='))
  6.         {
  7.             $string = $string[0];
  8.             $pre = $pre[0];
  9.         }
  10.         $string = str_replace('\"', '"', $string);
  11.     	uasort($words,create_function('$a, $b','return strlen($a)>strlen($b);'));

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

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


咨询客服

咨询客服

英文演示为原版演示地址,位于境外国内访问可能比较缓慢(建议爬梯浏览),你在本站所下载的主题等源码仅供测试学习之用,如果要商用请购买 正版授权,以便获得官方的更新和售后服务。

本站承接WordPress/织梦/帝国cms主题安装、深度汉化、加速优化等业务,详询在线客服!