织梦dedecms5.7各版本的文档关键词维护功能均无效,文章自动插入关键词超链接不可以。梦飞亲自测试通过以下代码,可以修复织梦的文档关键词并且产生自动内链,
织梦管理后台需要以下设置:
1、后台-采集-文档关键词维护,添加关键词及链接;
2、后台-系统-核心设置 关键字替换(是/否)使用本功能会影响HTML生成速度:是
3、后台-系统-其他选项
变量名称:cfg_replace_num
变量类型:文字
参数说明:文档内容同一关键词替换次数(0为全部替换)
变量值:9
所属组:其他选项
修改文件 \include\arc.archives.class.php
1、搜索代码
global $cfg_cmspath;
下面增加
global $cfg_replace_num; // 文档关键词内链修复 梦飞 www.mfisp.com 2021-02-23
2、搜索代码
$body = @preg_replace_callback("#(^|>)([^<]+)(?=<|$)#sU", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body);
替换为如下代码
// 文档关键词内链修复 梦飞 www.mfisp.com 2021-02-23 //$body = @preg_replace_callback("#(^|>)([^<]+)(?=<|$)#sU", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); if($cfg_replace_num > 0) { $query = "SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC"; $this->dsql->SetQuery($query); $this->dsql->Execute(); while($row = $this->dsql->GetArray()) { $key = trim($row['keyword']); $key_url=trim($row['rpurl']); $body = str_replace_limit($key, "$key", $body, $cfg_replace_num); } } else { $query = "SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC"; $this->dsql->SetQuery($query); $this->dsql->Execute(); while($row = $this->dsql->GetArray()) { $key = trim($row['keyword']); $key_url=trim($row['rpurl']); $body = str_replace($key, "$key", $body); } } // 文档关键词内链修复 梦飞 www.mfisp.com 2021-02-23
3、搜索
//高亮专用, 替换多次是可能不能达到最多次
替换为
// 文档关键词内链修复 梦飞 www.mfisp.com 2021-02-23 //指定替换次数功能 function str_replace_limit($search, $replace, $subject, $limit){ if(is_array($search)){ foreach($search as $k=>$v){ $search[$k] = '`'. preg_quote($search[$k], '`'). '`'; } }else{ $search = '`'. preg_quote($search, '`'). '`'; } return preg_replace($search, $replace, $subject, $limit); } // 文档关键词内链修复 梦飞 www.mfisp.com 2021-02-23 //高亮专用, 替换多次时可能不能达到最多次
在织梦后台,重新生成网站静态网页试试?
这种方式不会修改数据库里面的文章内容,只在生成html静态网页时候替换掉关键词自动内连好,但生成效率会受到影响。