織夢dedecms5.7各版本的文檔關鍵詞維護功能均無效,文章自動插入關鍵詞超鏈接不可以。夢飛親自測試通過以下代碼,可以修復織夢的文檔關鍵詞并且產生自動內鏈,
織夢管理后臺需要以下設置:
1、后臺-采集-文檔關鍵詞維護 添加關鍵詞及鏈接;
2、后臺-系統-核心設置 關鍵字替換(是/否)使用本功能會影響HTML生成速度:是
3、后臺-系統-其他選項 文檔內容同一關鍵詞替換次數(0為全部替換): 設置一個數值,建議為2。
修改文件 includerc.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 sky_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, "<a href='$key_url' target='_blank'><u>$key</u></a>", $body, $cfg_replace_num);
}
}
else
{
$query = "SELECT * FROM sky_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, "<a href='$key_url' target='_blank'><u>$key</u></a>", $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
//高亮專用, 替換多次時可能不能達到最多次