不少人都在使用织梦cms系统,对于pc端还好,图片使用相对路径都可以打开,可是一旦开通的移动端,图片就成了死链接了,如此怎么样解决呢,其实方法很多,下面我们就来介绍下简单的方法吧!
很多朋友使用dedecms的时候都用了二级域名的功能,所以造成很多文章中图片不显示的问题。在百度后得到一个方法就是进入dede后台“系统”-“系统基本参数”-“核心设置”,开启支持多站点,结果也不管用。
终极 解决方法
找到 include\dialog\select_images_post.php 第108行
$fileurl = $activepath.’/’.$filename;
换成:
$fileurl = ‘你的域名’.$activepath.’/’.$filename;
这样就可以完美实现dedecms上传图片相对路径改成绝对路了。
dedecms升级到5.7SP1后,开启二级域名,你会发现,在二级域名下的文章,上传的图片地址都是:二级域名+图片地址,这是相对路径。但是你的图片是默认上传在uploads里面的。应该使用绝对路径。这就出现图片路径错误,导致图片不显示。那怎么修改这种情况呢?我在网上看了好多方法,但是大部分最终是不可用的。在这里,将两种有效的方法分享给大家。这两种方法都是在你开启“多站点支持”、“绑定完二级域名”的前提下。
第一种:批量修改域名下所有文章内的图片路径。
1、进后台-核心-批量维护-数据库内容替换
2、选择表 dede_addonarticle
3、字段 body
4、被替换内容: src="/uploads/
5、替换为:src="http://你的域名/uploads/
6、点击“开始替换”
提示完成后就代表替换完成。 生成一下文章,你就发现前台显示正常了。
这种方法对于网站不大经常更新的站长比较适合,如果你每天都会更新网站文章,这个方法就会太繁琐了!下面介绍第二种方法。彻底解决这个问题。
第二种:修改程序文件,增加一个参数。
1、找到include下的文件extend.func.php
2、在文件最后增加一个参数。(php函数的结束括号外)
function replaceurl($newurl)
{
$newurl=str_replace('src="/uploads/allimg/','src="http://你的域名/uploads/allimg/',$newurl);
return $newurl;
}
3、将文章正文的调用标签 {dede:field.body/}修改成 {dede:field.body function='replaceurl(@me)'/}
4、传到服务器,在测试一下就会发现,问题解决!
织梦缩略图:
在插入数据库和修改数据库的时候(添加和编辑),只需判断当前缩略图是否包含域名这个字符串,如果包含了就不做操作,没包含就加一个绝对路径,就解决了.也就是这里只需要改一个地方,就是操作数据库前处理下就好了.我用的是这种.
下面是详细代码:
大家打开织梦的后台路径默认是dede/article_add.php和 dede/article_edit.php
两个文件一个是添加的时候,一个是编辑的时候
搜索if(preg_match("#j#", $flag)) $ismake = -1; 这句代码
在这句代码的上面加入以下代码:
if($litpic!='' && !checkstr($litpic,$cfg_basehost)){
$litpic=$cfg_basehost.$litpic;
}
然后随便在include的一个php文件里面加入以下代码:
function checkstr($str,$str1){
//判断是否包含$str1这个字符
$tmparray = explode($str1,$str);
if(count($tmparray)>1){
return true;
} else{
return false;
}
}
就解决了,这个判断的意思就是如果缩略图不为空的话,并且缩略图url不包含域名的话,就给他加一个域名,这样就解决了.
昨天那篇教程只写了关于缩略图的,因为当时客户没和我说织梦内容页里面也需要转为带域名的绝对路径.
所以今天早上就把后面的代码写完了.我直接写代码吧.
打开include\dialog\select_images_post.php这个文件,然后在108行
$fileurl = $activepath.'/'.$filename;
改为
$fileurl = $cfg_basehost.$activepath.'/'.$filename;
这里的意思就是编辑器上传的时候,带上域名这样的绝对路径.
然后打开/dede/inc/inc_archives_functions.php
找到436行的样子
global $cuserLogin,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir,$ddcfg_image_dir,$cfg_addon_savetype;
改为
global $cfg_basehost,$cuserLogin,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir,$ddcfg_image_dir,$cfg_addon_savetype;
找到481行的样子
if($isremote==1 && preg_match("#^http:\/\/#i", $picname))
改成
if(($isremote==1 && preg_match("#^http:\/\/#i", $picname)) && !checkstr($picname,$cfg_basehost))
找到502行的样子
if(($litpic=='ddfirst' && !preg_match("#^http:\/\/#i", $picname))
改为
if(($litpic=='ddfirst' && !preg_match("#^http:\/\/#i", $picname)) || ($litpic=='ddfirst' && checkstr($picname,$cfg_basehost)))
找到503行的样子
$oldpic = $cfg_basedir.$picname;在这句代码的上面加一句 $picname = str_replace($cfg_basehost,'',$picname);
然后可以把滚动条拉到最下面 加入以下函数:
function checkstr($str,$str1){
//判断是否包含$str1这个字符
$tmparray = explode($str1,$str);
if(count($tmparray)>1){
return true;
} else{
return false;
}
}
那么基本就搞定了
具体什么意思我就不说了,看的懂的看代码就懂了,看不懂的说了也没用.
织梦CMS缩略图和文章内容图片自动转化为带域名的绝对路径 这个教程也就讲完了,希望可以帮助到大家