DEDECMS如果我們需要將不同目錄綁定不同二級域名或者不同域名作為多站點使用,就需要開啟系統(tǒng)設置里面的多站點支持功能,這樣整站的附件圖片,都會被自動加上主站的域名,比如原來文章中的/upload/allimg/1709/234214324.JPG這樣形式的相對路徑就會被自動替換成https://www.bnxb.com/upload/allimg/1709/234214324.JPG這種形式的絕對路徑。
但是我們在使用中也發(fā)現(xiàn)目前版本的DEDE(5.7 SP2)存在一個BUG問題,開啟后,因為文章中發(fā)布的圖片都變成絕對地址,因此縮略圖被自動提取后,也變成了絕對地址,但是在欄目頁或者首頁引用縮略圖的時候,DEDE系統(tǒng)因為你開啟了多站點支持因此又會在原來縮略圖的外面再多套一個你的域名,就會使縮略圖變成類似
所以后面發(fā)布的文章,縮略圖就會全部無法顯示。雖然我們可以用系統(tǒng)里面的批量維護-數(shù)據(jù)庫內容替換 功能來將縮略圖中的域名全部去掉,但是每次發(fā)布文章都要操作一次很麻煩,這里提供一個暫時的解決辦法
修改DEDE/INC/inc_archives_functions.php
將
/** * 取第一個圖片為縮略圖 * * @access public * @param string $body 文檔內容 * @return string */ function GetDDImgFromBody(&$body) { $litpic = ''; preg_match_all("/(src)=["|'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU",$body,$img_array); $img_array = array_unique($img_array[2]); if(count($img_array)>0) { $picname = preg_replace("/["|'| ]{1,}/", '', $img_array[0]); if(preg_match("#_lit.#", $picname)) $litpic = $picname; else $litpic = GetDDImage('ddfirst', $picname,1); } return $litpic; } |
修改為
查看源碼 打印代碼幫助 /** * 取第一個圖片為縮略圖 * * @access public * @param string $body 文檔內容 * @return string */ function GetDDImgFromBody(&$body) { global $cfg_basehost; $litpic = ''; preg_match_all("/(src)=["|'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU",$body,$img_array); $img_array = array_unique($img_array[2]); if(count($img_array)>0) { $picname = preg_replace("/["|'| ]{1,}/", '', $img_array[0]); if(preg_match("#_lit.#", $picname)) $litpic = $picname; else $litpic = GetDDImage('ddfirst', $picname,1); } $litpic = str_replace($cfg_basehost,"",$litpic); return $litpic; } |
意思是只要縮略圖中出現(xiàn)你網(wǎng)站的域名就自動去除。問題解決
其實就是增加了兩行代碼,
global $cfg_basehost;
和
$litpic = str_replace($cfg_basehost,"",$litpic);
版權聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內刪除!謝謝!