
| 歡迎訪問全國企業網站設計NO.1網站開發商平臺 | 付款方式 |
POST TIME:2020-10-09
DEDECMS如果我們需要將不同目錄綁定不同二級域名或者不同域名作為多站點使用,就需要開啟系統設置里面的多站點支持功能,這樣整站的附件圖片,都會被自動加上主站的域名,比如原來文章中的/upload/allimg/1709/234214324.JPG這樣形式的相對路徑就會被自動替換成https://www.bnxb.com/upload/allimg/1709/234214324.JPG這種形式的絕對路徑。
但是我們在使用中也發現目前版本的DEDE(5.7 SP2)存在一個BUG問題,開啟后,因為文章中發布的圖片都變成絕對地址,因此縮略圖被自動提取后,也變成了絕對地址,但是在欄目頁或者首頁引用縮略圖的時候,DEDE系統因為你開啟了多站點支持因此又會在原來縮略圖的外面再多套一個你的域名,就會使縮略圖變成類似
所以后面發布的文章,縮略圖就會全部無法顯示。雖然我們可以用系統里面的批量維護-數據庫內容替換 功能來將縮略圖中的域名全部去掉,但是每次發布文章都要操作一次很麻煩,這里提供一個暫時的解決辦法
修改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;
}
|
意思是只要縮略圖中出現你網站的域名就自動去除。問題解決
其實就是增加了兩行代碼,
global $cfg_basehost;
和
$litpic = str_replace($cfg_basehost,"",$litpic);