首页 > 运营 > 帮助中心 > 正文

织梦CMS让文章页自动内链不需要插件

2020-01-27 17:26:10
字体:
来源:转载
供稿:网友

让文章页自动内链不需要插件

打开 /include/arc.archives.class.php 文件,在修改最后的两个方法,按下面的方法进行修改。

主要修改了ReplaceKeyword里面查询关键字的时候排序的算法,然后注释了一个判断

  1. /**
  2. * 高亮问题修正, 排除alt title <a></a>直接的字符替换
  3. *
  4. * @param string $kw
  5. * @param string $body
  6. * @return string
  7. */
  8. function ReplaceKeyword($kw,&$body)
  9. {
  10. global $cfg_cmspath;
  11. $maxkey = 5;
  12. $kws = explode(",",trim($kw));    //以分好为间隔符
  13. $i=0;
  14. $karr = $kaarr = $GLOBALS['replaced'] = array();
  15. //暂时屏蔽超链接
  16. $body = preg_replace("#(<a(.*))(>)(.*)(<)(//a>)#isU", '//1-]-//4-[-//6', $body);
  17. /*
  18. foreach($kws as $k)
  19. {
  20. $k = trim($k);
  21. if($k!="")
  22. {
  23. if($i > $maxkey)
  24. {
  25. break;
  26. }
  27. $myrow = $this->dsql->GetOne("SELECT * FROM idea_keywords WHERE keyword='$k' AND rpurl<>'' ");
  28. if(is_array($myrow))
  29. {
  30. $karr[] = $k;
  31. $GLOBALS['replaced'][$k] = 0;
  32. $kaarr[] = "<a href='{$myrow['rpurl']}'><u>$k</u></a>";
  33. }
  34. $i++;
  35. }
  36. }
  37. */
  38. $query = "SELECT * FROM idea_keywords WHERE rpurl<>'' ORDER BY keyword DESC"; 
  39. $this->dsql->SetQuery($query);
  40. $this->dsql->Execute();
  41. while($row = $this->dsql->GetArray())
  42. {
  43. $key = trim($row['keyword']);
  44. $key_url=trim($row['rpurl']);
  45. $karr[] = $key;
  46. $kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>";
  47. }
  48. // 这里可能会有错误
  49. $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('//2', /$karr, /$kaarr, '//1')", $body);
  50. //恢复超链接
  51. $body = preg_replace("#(<a(.*))-/]-(.*)-/[-(//a>)#isU", '//1>//3<//4', $body);
  52. return $body;
  53. }
  54. }//End Archives
  55. //高亮专用, 替换多次是可能不能达到最多次
  56. function _highlight($string, $words, $result, $pre)
  57. {
  58. global $cfg_replace_num;
  59. $string = str_replace('/"', '"', $string);
  60. // if($cfg_replace_num > 0)
  61. // {
  62. // foreach ($words as $key => $word)
  63. // {
  64. // if($GLOBALS['replaced'][$word] == 1)
  65. // {
  66. // continue;
  67. // }
  68. // $string = preg_replace("#".preg_quote($word)."#", $result[$key], $string, $cfg_replace_num);
  69. // if(strpos($string, $word) !== FALSE)
  70. // {
  71. // $GLOBALS['replaced'][$word] = 1;
  72. // }
  73. // }
  74. // }
  75. // else
  76. // {
  77. $string = str_replace($words, $result, $string);
  78. //   }
  79. return $pre.$string;
  80. }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表