找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1207|回复: 0

[分享] dedecms自动给文章中的关键字加超链接完整版

[复制链接]
发表于 2018-7-22 20:55:18 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
在 include/arc.archives.class.php  这个文件中 有两个函数需要修改  ReplaceKeyword 和 _highlight
把这两个函数 第1014行开始到倒数第二行结束  修改为
  1. function ReplaceKeyword($kw,&$body)
  2. {
  3. global $cfg_cmspath;
  4. $maxkey = 5;
  5. $kws = explode(",",trim($kw)); //以分好为间隔符
  6. $i=0;
  7. $karr = $kaarr = $GLOBALS['replaced'] = array();
  8.    //暂时屏蔽超链接
  9. $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
  10.    global $dsql;
  11. $query="SELECT * FROM dede_keywords WHERE rpurl<>'' and sta=1 ORDER BY length(keyword)desc";
  12. $dsql->SetQuery($query);
  13. $dsql->Execute();
  14. while($row = $dsql->GetArray())
  15. {
  16. $key = trim($row['keyword']);
  17. $key_url=trim($row['rpurl']);
  18. $karr[] = $key;
  19. $kaarr[] = "<b><a href='$key_url' target='_blank'>$key</a></b>";
  20. }
  21. foreach ($karr as $key => $word)
  22. {
  23.     $body = preg_replace("/(^|>)([^<]+)(?=<|$)/sUe", "_highlight('\\2', \$karr[$key], \$kaarr[$key], '\\1')", $body);
  24. //echo $body."<br/>";
  25. //恢复超链接
  26. $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
  27. //暂时屏蔽超链接
  28. $body = preg_replace("/(<a(.*))(>)(.*)(<)(\/a>)/isU", '\\1-]-\\4-[-\\6', $body);
  29.    }
  30.    //恢复超链接
  31. $body = preg_replace("/(<a(.*))-\]-(.*)-\[-(\/a>)/isU", '\\1>\\3<\\4', $body);
  32. return $body;
  33. }
  34. }//End Archives
  35. //高亮专用, 替换多次是可能不能达到最多次
  36. function _highlight($string, $words, $result, $pre)
  37. {
  38. global $cfg_replace_num;
  39. $string = str_replace('"', '"', $string);
  40. if($GLOBALS['replaced'][$words] == 1)
  41. {
  42. return $pre.$string;
  43. }
  44. if($cfg_replace_num > 0)
  45. {
  46. $string = preg_replace("/".preg_quote($words)."/", $result, $string, $cfg_replace_num);
  47. if(strpos($string, $words) !== false)
  48. {
  49. $GLOBALS['replaced'][$words] = 1;
  50. //echo $words;
  51. }
  52. }
  53. else
  54. {
  55. $string = str_replace($words, $result, $string);
  56. }
  57. return $pre.$string;
  58. }
复制代码


保存替换就可以了

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-5 18:38 , Processed in 0.027914 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表