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

分类:SEO优化教程 发布时间:2019-06-06 21:20:47

摘要:织梦CMS如何&怎么让文章页自动内链不需要插件?dede让文章页自动SEO内链不需要插件方法&教程,适用于织梦5.7

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

打开 /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. }