织梦dedecms自动给文章中的关键字加超链接完整版 。在 include/arc.archives.class.php 这个文件中 有两个函数需要修改 ReplaceKeyword 和 _highlight把这两个函数 第1014行开始到倒数第二行结束 修改为function ReplaceKeyword($kw,&$body){global $cfg_cmspath;$maxkey = 5;$kws = explode(",",trim($kw)); //以分好为间隔符$i=0;$karr = $kaarr = $GLOBALS['replaced'] = array();
//暂时屏蔽超链接$body = preg_replace("/(<a(.*))(>)(.*)(<)(/a>)/isU", '-]--[-', $body);global $dsql;$query="SELECT * FROM dede_keywords WHERE rpurl<>'' and sta=1 ORDER BY length(keyword)desc";$dsql->SetQuery($query);$dsql->Execute();while($row = $dsql->GetArray()){$key = trim($row['keyword']);$key_url=trim($row['rpurl']);$karr[] = $key;$kaarr[] = "<b><a href='$key_url' target='_blank'>$key</a></b>";}foreach ($karr as $key => $word){$body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('', $karr[$key], $kaarr[$key], '')", $body);//echo $body."<br/>";
//恢复超链接$body = preg_replace("/(<a(.*))-]-(.*)-[-(/a>)/isU", '><', $body);//暂时屏蔽超链接$body = preg_replace("/(<a(.*))(>)(.*)(<)(/a>)/isU", '-]--[-', $body);}//恢复超链接$body = preg_replace("/(<a(.*))-]-(.*)-[-(/a>)/isU", '><', $body);return $body;}}//End Archives
//高亮专用, 替换多次是可能不能达到最多次function _highlight($string, $words, $result, $pre){global $cfg_replace_num;$string = str_replace('"', '"', $string);if($GLOBALS['replaced'][$words] == 1){return $pre.$string;}if($cfg_replace_num > 0){$string = preg_replace("/".preg_quote($words)."/", $result, $string, $cfg_replace_num);if(strpos($string, $words) !== false){$GLOBALS['replaced'][$words] = 1;//echo $words;}}else{$string = str_replace($words, $result, $string);}return $pre.$string;}保存替换就可以了。