然而,在实际使用过程中,我们发现当前版本的DEDECMS(5.7 SP2)存在一个BUG。当开启多站点支持后,文章中发布的图片变为绝对地址,导致缩略图被自动提取时也变成了绝对地址。但在栏目页或首页引用缩略图时,由于开启了多站点支持,系统会在原缩略图外再添加一层域名,最终使缩略图变成类似重复域名的形式,如:
https://www.baidu.com/https://www.baidu.com/upload/allimg/1709/234214324.JPG
为了解决这一问题,这里提供一种临时解决方案:修改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);