织梦 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:修改系统文件之前最好对要修改的文件做一下备份,以防出错.参考链接:https://www.mimisucai.com/teach/202344568.html