设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 教程 > 正文

dedecms关键词替换计划

发布时间:2022-06-27 14:23 所属栏目:61 来源:互联网
导读:本篇文章主要讲述了dedecms关键词替换方案,根据频率先替换长尾关键词再替换主关键词,本篇章具有一定的参考价值,感兴趣的朋友可以了解一下。 问题:在使用dedecms的文档关键词替换功能时,会造成交叉替换,如: 长尾关键词1:男人喝金丝皇菊有什么好处? 长
  本篇文章主要讲述了dedecms关键词替换方案,根据频率先替换长尾关键词再替换主关键词,本篇章具有一定的参考价值,感兴趣的朋友可以了解一下。
 
  问题:在使用dedecms的文档关键词替换功能时,会造成交叉替换,如:
 
  长尾关键词1:男人喝金丝皇菊有什么好处?
 
  长尾关键词2:喝金丝皇菊有什么好处?
 
  主关键词3:金丝皇菊
 
  使用系统默认的功能时,在替换主关键词的时候,会将上面已经替换好的长尾关键词中的“金丝皇菊”也替换掉,从而破坏了原有的长尾关键词锚文本。
 
  解决思路:
 
  1.先将要替换的关键词替换成类似:
 
  关键词1:'#####0#####'
 
  关键词2:'#####2#####'
 
  关键词3:'#####3#####'
 
  再进行以上替换操作的时候,我们需要保存关键词所对应的锚文本,如:
 
  '#####0#####' --> 关键词1的锚文本
 
  '#####1#####' --> 关键词2的锚文本
 
  '#####2#####' --> 关键词3的锚文本
 
  等全部替换完毕后,我们最后再恢复回来
 
  这里,我们主要修改:include/arc.archives.class.php 文件
 
  修改部分如下:
 
  //高亮专用, 替换多次是可能不能达到最多次
  
  function _highlight($string, $words, $result, $pre) {
  
      global $cfg_replace_num;
  
      //     if (version_compare(PHP_VERSION, '5.5.0', '>='))
  
      //     {
  
      //         $string = $string[0];
  
      //         $pre = $pre[0];
  
      //     }
  
      //修改 Start
  
      $replaced_array = array();
  
      $replaced_tiems = 0;
  
      //修改 End
  
        
  
      $string = str_replace('\"', '"', $string);
  
      if ($cfg_replace_num > 0) {
  
          foreach ($words as $key => $word) {
  
              if ($GLOBALS['replaced'][$word] == 1) {
  
                  continue;
  
              }
  
              //修改 Start
  
              $replace_string = '#####' . $replaced_tiems . '#####';
  
              $replaced_array[$replace_string] = $result[$key];
  
              $string = preg_replace("#" . preg_quote($word) . "#", $replace_string, $string, $cfg_replace_num);
  
              $replaced_tiems+= 1;
  
              //修改  End
  
              //             $string = preg_replace("#".preg_quote($word)."#", $result[$key], $string, $cfg_replace_num);
  
              if (strpos($string, $word) !== FALSE) {
  
                  $GLOBALS['replaced'][$word] = 1;
  
              }
  
          }
  
          //修改 Start
  
          foreach ($replaced_array as $k => $v) {
  
              $string = str_ireplace($k, $v, $string);
  
          }
  
          //修改  End

      } else {
  
          $string = str_replace($words, $result, $string);
  
      } //phpfensi.com
  
      return $pre . $string;
  
  }
  注意:这里我们需要在后台修改文档关键词的频率,默认是 频率高的优先替换,频率低的后替换。
 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读