QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

PHPCMS

phpcms自动去掉非本站内链

 shitouadmin  2024-08-07 18:23:31
编辑器文本自动去掉非本站内链,这个功能一般的cms都有,但是phpcms好像没有,可以按照如下改造一下
1、找到phpcms\libs\functions\extention.func.php添加去除外链函数
  1. //去除外链 
  2.     function clear_links($str){ 
  3.         if(!$str) return $str; 
  4.         $sitelist = getcache('sitelist','commons'); 
  5.         $siteid   = get_siteid(); 
  6.         $host   = $sitelist[$siteid]['domain']; 
  7.         $parts = parse_url($host); 
  8.         $domain = $parts['host']; 
  9.         $domain_rule = str_replace('.'"\\.", $domain); 
  10.         preg_match_all("#<a([^>]*)>(.*)<\/a>#iU", $str, $arr); 
  11.         if (is_array($arr[0])) { 
  12.             $rparr = array(); 
  13.             $tgarr = array(); 
  14.             foreach ($arr[0] as $i => $v) { 
  15.                 if ($domain != '' && preg_match('#' . $domain_rule . '#i', $arr[1][$i])) { 
  16.                     continue
  17.                 } else { 
  18.                     $rparr[] = $v; 
  19.                     $tgarr[] = $arr[2][$i]; 
  20.                 } 
  21.             } 
  22.             if (!empty($rparr)) { 
  23.                 $str = str_replace($rparr, $tgarr, $str); 
  24.             } 
  25.         } 
  26.         return $str; 
  27.     } 
2、找到文件phpcms\model\content_model.class.php找到代码:
第一处(解决添加文章的时候)
  1. //附属表 
  2. $this->table_name = $this->table_name.'_data'
  3. $this->insert($modelinfo); 
在这前面加入代码:
  1. // 去掉外链 
  2. if(isset($modelinfo['content']) && !empty($modelinfo['content'])){ 
  3.     $modelinfo['content'] = clear_links($modelinfo['content']); 
第二处(解决编辑文章的时候)
找到代码:
  1. //附属表 
  2. $this->table_name = $this->table_name.'_data'
  3. $this->update($modelinfo,array('id'=>$id)); 
在这前面添加代码:
  1. // 去掉外链 
  2. if(isset($modelinfo['content']) && !empty($modelinfo['content'])){ 
  3.         $modelinfo['content'] = clear_links($modelinfo['content']); 
3、如果是采集需要去掉外链的话则按照如下方法
找到代码phpcms\modules\collection\node.php找到代码
  1. $content = $v['data']['content']; 
  2. $content = str_replace("'",'',$content); 
在下边新增代码
  1. $content = clear_links($content);   
4、如果是历史内容,不想一个一个的去处理,可以按照如下方法
找到代码phpcms\modules\content\index.php找到show方法,找到代码:
  1. extract($data); 
在前面新增代码:
  1. // 去掉外链 
  2. if(isset($data['content']) && !empty($data['content'])){ 
  3.     $data['content'] = clear_links($data['content']); 

欢迎反馈bug

¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《phpcms自动去掉非本站内链》发布于石头博客文章,作者:shitouadmin,如若转载,请注明出处:https://www.pweb123.com/cms/phpcms/1034.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序