typecho实现文章内容替换为内链,有助于SEO优化

其实可以发布文章的时候,去添加外链,但是个人觉得很麻烦,而且文章数量多的话,维护起来更加麻烦了,添加内链可以引导蜘蛛爬行走向,对网站:首页-栏目-文章的分层权重是很有帮助的

其实也可以借助插件实现这个功能,插件地址:http://www.yzmb.me/archives/net/keywords-for-typecho

如果不喜欢插件,可以按教材实现到主题里面

  1. $Keywordspress = new Typecho_Widget_Helper_Form_Element_Textarea('Keywordspress', NULL, NULL, _t('关键字内链'), _t('每行1组以"关键词<strong style="color:#467B96;">|</strong>(半角竖线)链接"形式填写)'));
  2. $form->addInput($Keywordspress);
  3. /**
  4. * 文章内容替换为内链
  5. */
  6. function get_glo_keywords($content)
  7. {
  8. $settings = Helper::options()->Keywordspress;
  9. $keywords_list = array();
  10. if (strpos($settings,'|')) {
  11. //解析关键词数组
  12. $kwsets = array_filter(preg_split("/(\r|\n|\r\n)/",$settings));
  13. foreach ($kwsets as $kwset) {
  14. $keywords_list[] = explode('|',$kwset);
  15. }
  16. }
  17. ksort($keywords_list); //对关键词排序,短词排在前面
  18. if($keywords_list){
  19. $readnum = 0;
  20. $i = 0;
  21. $j = 1;
  22. foreach ($keywords_list as $key => $val) {
  23. $title = $val[$i];
  24. $len = strlen($title);
  25. $str = '<a href="'.$val[$j].'" target="_blank">@'.$title.'</a>';
  26. $str_index = mb_strpos($content, $title);
  27. $content = preg_replace('/(?!<[^>]*)'.$title.'(?![^<]*>)/',$str,$content,1);
  28. if(is_numeric($str_index)){
  29. $readnum += 1;
  30. //$content = substr_replace($content,$str,$str_index,$len);
  31. //$content = $this->str_replace_limit($title,$str,$content,$this->limit);
  32. }
  33. if($readnum == 8) {
  34. return $content; //匹配到8个关键词就退出
  35. $i += 2;
  36. $j += 2;
  37. }
  38. }
  39. }
  40. return $content;
  41. }

主要是涉及到3个问题,获取到主题里面的字符串,解析到数值里面,然后循环赋值到正则替换文章内容,则实现了

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/88
0 评论
5.1k

发表评论

!