DEDECMS如果我们需要将不同
目录绑定不同二级
域名或者不同
域名作为
多站点使用,就需要开启
系统设置里面的多
站点支持
功能,这样整站的附件
图片,都会被
自动加上主站的域名,比如原来
文章中的/upload/allimg/1709/234214324.JPG这样形式的相对路径就会被
自动替换成https://www.bnxb.com/upload/allimg/1709/234214324.JPG这种形式的绝对路径。
但是我们在
使用中也发现目前
版本的DEDE(5.7 SP2)存在一个BUG
问题,开启后,因为
文章中发布的
图片都变成绝对
地址,因此
缩略图被自动提取后,也变成了绝对
地址,但是在
栏目页或者首页引用
缩略图的时候,DEDE
系统因为你开启了多
站点支持因此又会在原来缩略图的外面再多套一个你的域名,就会使缩略图变成类似
所以后面发布的文章,缩略图就会全部无法显示。虽然我们可以用系统里面的批量维护-
数据库内容替换
功能来将缩略图中的域名全部去掉,但是每次发布文章都要操作一次很麻烦,这里提供一个暂时的
解决办法
将
09 |
* @param string $body 文档内容 |
15 |
function GetDDImgFromBody(&$body) |
21 |
preg_match_all( "/(src)=[" |'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU",$body,$img_array); |
23 |
$img_array = array_unique($img_array[2]); |
25 |
if (count($img_array)>0) |
29 |
$picname = preg_replace( "/[" | '| ]{1,}/", ' ', $img_array[0]); |
31 |
if (preg_match( "#_lit.#" , $picname)) $litpic = $picname; |
33 |
else $litpic = GetDDImage( 'ddfirst' , $picname,1); |
|
修改为
13 |
* @param string $body 文档内容 |
19 |
function GetDDImgFromBody(&$body) |
27 |
preg_match_all( "/(src)=[" |'| ]{0,}([^>]*.(gif|jpg|bmp|png))/isU",$body,$img_array); |
29 |
$img_array = array_unique($img_array[2]); |
31 |
if (count($img_array)>0) |
35 |
$picname = preg_replace( "/[" | '| ]{1,}/", ' ', $img_array[0]); |
37 |
if (preg_match( "#_lit.#" , $picname)) $litpic = $picname; |
39 |
else $litpic = GetDDImage( 'ddfirst' , $picname,1); |
43 |
$litpic = str_replace($cfg_basehost, "" ,$litpic); |
|
意思是只要缩略图中出现你
网站的域名就自动去除。
问题解决
global $cfg_basehost;
和
$litpic = str_replace($cfg_basehost,"",$litpic);