返回舊版| 微信建站| 我要建站 | 建站學習 | 加入收藏
PHPCMS當前位置:首頁 > cms教程 > 綜合cms > PHPCMS > 正文

phpcms v9實現對組圖采集并本地化保存

發布時間:2019-04-19 15:22:04   來源:   點擊:
phpcms對圖片采集一直不是很好,更不要說對組圖采集了,關于修復phpcms無法采集https網站圖片的問題可參考:http://www.lwiax.tw/cms/zhcms/phpcms/show_770.html,下面來說一下具體怎么實現對組圖的采集
(1)給數據庫v9_collection_node表增加兩個字段:pictureurls_rule和pictureurls_html_rule類型分別是char(100)和text

(2)找到\phpcms\modules\collection\templates\node_form.tpl.php文件大致216行的</fieldset>在此后邊添加代碼:
  1. <fieldset> 
  2.     <legend><a href="javascript:void(0)" onclick="$(this).parent().parent().children('table').toggle()"><?php echo L('pictureurls').L('rule')?></a></legend> 
  3.     <table width="100%" class="table_form" style="display:none"
  4.         <tr> 
  5.             <td width="120"><?php echo L('matching_rule')?>:</td>  
  6.             <td> 
  7.             <textarea rows="5" cols="40" name="data[pictureurls_rule]" id="pictureurls_rule"><?php if(isset($data['pictureurls_rule'])) echo $data['pictureurls_rule']?></textarea> <br><?php echo L('use')?>"<a href="javascript:insertText('content_rule''<?php echo L('[content]')?>')"><?php echo L('[content]')?></a>"<?php echo L('w_wildmenu')?> 
  8.             </td> 
  9.             <td width="120"><?php echo L('filtering')?>:</td>  
  10.             <td> 
  11.             <textarea rows="5" cols="50" name="data[pictureurls_html_rule]" id="pictureurls_html_rule"><?php if(isset($data['pictureurls_html_rule'])) echo $data['pictureurls_html_rule']?></textarea> 
  12.             <input type="button" value="<?php echo L('select')?>" class="button"  onclick="html_role('data[pictureurls_html_rule]')"
  13.             </td> 
  14.         </tr> 
  15.     </table> 
  16. </fieldset> 
(注意上面javascript:void(0)中間的冒號改成英文的)
由于上面代碼用到了L('pictureurls')所以需要對phpcms\languages\zh-cn\collection.lang.php里增加代碼:
  1. $LANG['pictureurls'] = '組圖'
(3)找到phpcms\modules\collection\node.php大概471行把:
  1. $node_field = array(''=>L('please_choose'),'title'=>L('title'), 'author'=>L('author'), 'comeform'=>L('comeform'), 'time'=>L('time'), 'content'=>L('content')); 
改成:
  1. $node_field = array(''=>L('please_choose'),'title'=>L('title'), 'author'=>L('author'), 'comeform'=>L('comeform'), 'time'=>L('time'), 'content'=>L('content'), 'pictureurls'=>L('pictureurls')); 

(4)找到phpcms\modules\collection\classes\collection.class.php的第61行,在獲取內容判斷下邊新增代碼用于獲取組圖:
  1. //獲取組圖 
  2.             if ($config['pictureurls_rule']) { 
  3.                 $author_rule =  self::replace_sg($config['pictureurls_rule']); 
  4.                 $data['pictureurls'] = self::replace_item(self::cut_html($html, $author_rule[0], $author_rule[1]), $config['pictureurls_html_rule']); 
  5.                 $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.bmp|\.jpeg]))[\'|\"].*?[\/]?>/"
  6.                 preg_match_all($pattern,$data['pictureurls'],$data['pictureurls']); 
  7.                 $pictureurls_list = $data['pictureurls'][0]; 
  8.                 $data['pictureurls'] =  array2string($pictureurls_list); 
  9.             } 
  10.              
  11.             //下載組圖中的圖片到本地 
  12.             if (!empty($data['pictureurls']) && !empty($pictureurls_list) && $config['down_attachment'] == 1) { 
  13.                  
  14.                 pc_base::load_sys_class('attachment','',0); 
  15.                 $attachment = new attachment('collection','0',get_siteid()); 
  16.                 $data['pictureurls'] = array();//清空重新賦值用 
  17.                 $array = $temp = array(); 
  18.                 $reg = '/<img.*?src=[\'"](.*?)[\'"]/i'
  19.                 foreach($pictureurls_list as $key => $pic){ 
  20.                     $tmp = $attachment->download('pictureurls', $pic,$config['watermark']); 
  21.                     preg_match_all($reg , $tmp , $results); 
  22.                     $fullpic = parse_url($results[1][0]); 
  23.                     $temp['url'] = $results[1][0]; 
  24.                     $temp['alt'] = end(explode('/', $fullpic['path'])); 
  25.                     $array[$key] = $temp; 
  26.                  
  27.                 } 
  28.                 $data['pictureurls'] = array2string($array,JSON_FORCE_OBJECT); 
  29.             } 

(5)找到phpcms\modules\content\fields\content_input.class.php找到:
  1. if(method_exists($this, $func)) $value = $this->$func($field, $value); 
改成:
  1. if(method_exists($this, $func)){ 
  2.             if($func == 'images' && $isimport){ 
  3.                 //采集的時候不對組圖字段做處理 
  4.             }else
  5.                $value = $this->$func($field, $value); 
  6.             } 
  7.         }; 
修改好之后 一定要記得更新一下緩存,否則沒效果!


測試效果如下:



相關欄目
熱門文章
最新圖文
評論排行
版權所有:鄭州騰石網絡科技有限公司 備案信息:豫ICP備18019117號
站長QQ:2863868475 業務合作咨詢:15137100750(同微信)
本站所有投放的廣告是有其他網站提供,不代表本站立場,同時網站首頁廣告位對外出租詳情咨詢本站站長!同時歡迎廣大站長加入個人建站團隊
  • 建站客服
  • CMS仿站
  • CMS學習
  • 技術交流群:336572814
棋牌app源码 吉林快3开奖今天 大乐透开奖结果查询 今日白小姐开奖结果 北京赛pk10记录 陕西快乐十分电子版走势图 江西快3开奖最快 性开放直播app7 上海快三中奖规则 双色球开奖号码 香港马会投注电话