DEDECMS图片太大以及开启子域名不显示图片的解决方案

今天用DEDECMS做网站发现两个问题,一是开启子域名后图片不显示,二是图片太大,严重影响了图片的展现

一、先说开启子域名后图片不显示的解决方案,这主要涉及到一个图片路径的问题,我们把图片路径修改成“绝对路径”,只需要增加一个函数和修改相应模板。

1、重新构建函数,

用FTP工具修改文件include/extend.func.php,在最下方加入如下代码(注意是英文字符,www.leafbook.cn替换成你的主域名)
function replaceurl($newurl)
{
$newurl=str_replace(‘src=”/uploads/allimg/’,’src=”http://www.leafbook.cn/uploads/allimg/’,$newurl);
return $newurl;
}
2、文章模板中调用文章内容的标签{dede:field.body/}替换成:{dede:field.body function=’replaceurl(@me)’/}

3、找到【系统】——【系统设置】——【核心设置】——【(是/否)支持多站点,开启此项后附件、栏目连接、arclist内容启用绝对网址】:选择是,修改完成后保存。

4、重新生成所有内容页面。

完成上面的操作后,再创建新文章时,文章中的图片路径默认就是生成绝对路径了。

如果已经上传了很多文章,可能还需要修改数据库里之前的文章

5、进入织梦后台,找到【核心】——【批量维护】——【数据库内容替换】
选择表 dede_addonarticle 字段 body
被替换内容: src=”/uploads/
替换为:src=”http://www.leafbook.cn/uploads/
(把www.leafbook.cn改成你的主域名)

完成上面5个步骤之后新生成的图片就能正常显示了。

接下来解决第二个问题,DEDECMS上传图片后默认都非常大,我们需要增加一段代码,解决图片过大无法展示全图的问题。下面这一段代码可以是图片等比例缩小。

1、依旧是FTP工具,打开include/arc.archives.class.php
找到:
//设置全局环境变量
$this->Fields[‘typename’] = $this->TypeLink->TypeInfos[‘typename’];
@SetSysEnv($this->Fields[‘typeid’],$this->Fields[‘typename’],$this->Fields[‘id’],$this->Fields[‘title’],’archives’);

在下面加入代码:
//替换图片Alt为文档标题
$this->Fields[‘body’] = str_ireplace(array(‘alt=””‘,’alt=”’),”,$this->Fields[‘body’]);
$this->Fields[‘body’] = preg_replace(“@ [s]{0,}alt[s]{0,}=[“‘s]{0,}[sS]{0,}[“‘s]
@isU”,” “,$this->Fields[‘body’]);
$this->Fields[‘body’] = str_ireplace(“<img ” ,”<img alt=””.$this->Fields[‘title’].””
“,$this->Fields[‘body’]);
//img标签中加入超宽缩小JS调用代码
$suolue=’onload=”javascript:ImgReSize(this)”‘;
$this->Fields[‘body’] = str_ireplace(“<img ” ,”<img “.$suolue.” “,$this->Fields[‘body’]);
//屏蔽height属性
$this->Fields[‘body’] = preg_replace(‘/<img(.+?)height=(.+?) (.+?)>/i’,”<img$1$3>”,$this->Fields[‘body’]);
2、打开你前台文章页模版,默认的是:/templets/default/article_article.htm,加入如下代码。那个600的数值,意思是当图片超过这个数值,自动将图片缩小,宽度缩小为600,高度自动按比例缩小,这样不会变形。
<script language=’javascript’>
function ImgReSize(e)
{
if(e.width>600) //600可根据你文章的内容区域大小,可调整
{
e.width=600; //等同上面你设的那个数值
e.style.width=””;
}
if(e.height>10)
{
e.style.height=””;
}
}
</script>
到此,我们就全部修改好了,内容页图片太大导致布局混乱问题就解决了。

以上部分代码来自网络,叶书博客进行整合。测试版本:DEDECMS V5.7(其他版本自行测试)

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注