// 打开 /include/arc.archives.class.php 文件,在修改最后的两个方法,按下面的方法进行修改。
function ReplaceKeyword($kw,&$body) {
global $cfg_cmspath;
$maxkey = 5;
$kws = explode(",",trim($kw)); //以分好为间隔符
$i=0;
$karr = $kaarr = $GLOBALS['replaced'] = array();
// 暂时屏蔽超链接
$body = preg_replace("#()(.*)(<)(/a>)#isU", '\\1-]-\\4-[-\\6', $body);
$query = "SELECT * FROM idea_keywords WHERE rpurl<>' ' ORDER BY keyword DESC";
$this->dsql->SetQuery($query);
$this->dsql->Execute();
while($row = $this->dsql->GetArray()) {
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = "$key";
}
// 这里可能会有错误
$body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('\\2', \\$karr, \\$kaarr, '\\1')", $body);
// 恢复超链接
$body = preg_replace("#()#isU", '\\1>\\3<\\4', $body);
return $body;
}
// 高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre) {
global $cfg_replace_num;
$string = str_replace('\\\\"', '"', $string);
$string = str_replace($words, $result, $string);
return $pre.$string;
}
为了使Dedecms能够自动替换文章中的关键字并生成内链,我们需要对`ReplaceKeyword`函数进行修改。主要改动包括:
1. 修改了查询关键字时的排序算法,确保更长的关键字优先被替换。
2. 注释掉了限制替换次数的部分代码,使得所有出现的关键字都能被完全替换。
这些改动可以显著提高内链的质量和数量,从而提升网站的整体SEO效果。
此外,还需要注意以下几点:
- 确保数据库中的`idea_keywords`表已经正确配置了关键字及其对应的链接。
- 测试修改后的功能,确保没有破坏原有逻辑或产生新的问题。
- 备份原始文件,以便在出现问题时可以快速恢复。
通过以上步骤,您可以轻松地让Dedecms自动完成文章页的SEO内链工作,而无需额外安装任何插件。这种方法不仅提高了效率,还减少了系统负担,非常适合需要频繁更新内容的网站。
希望这篇文章能帮助您更好地理解和应用Dedecms的SEO优化技巧。如果您有任何疑问或建议,请随时留言交流!