ecshop站点图片路径相对地址改为绝对地址
在 ecshop 系统源码中,ecshop 对于图片的处理,使用了相对路径,当然这也是大多数开源系统所采用的方法,这样就不至于我们在更换域名神马的情况下,图片出现不显示的情况了。
但有些情况我们也需要使用绝对路径,比如广告图片,还有一些附件什么的,这个是要看什么情况下使用的吧,夏日博客最近遇到广告图的绝对路径更换,所以就小小的研究了一下。
一,我们先看一下如何把 ecshop 广告图片 /data/afficheimg/ 相对路径改为绝对路径地址吧。
首先打开控制图片路径的函数,找到 includes/lib_insert.php 文件,查找 functions insert_ads($arr)函数,如下代码:
- case 0: // 图片广告
- $src = (strpos($row['ad_code'], 'http://') === false && strpos($row['ad_code'], 'https://') === false) ?
- 'http://www.xiariboke.net/'.DATA_DIR . "/afficheimg/$row[ad_code]" : $row['ad_code'];
好了,再去看看自己的广告图片地址吧,现在已经改为绝对地址了。
二,有的时候还需要将 ecshop 产品图片的相对路径改为绝对路径地址,我们先来看一下如何进行修改吧。
修改Includes/lib_common.php文件中的function get_image_path函数,搜索:重写 URL 地址,在下面的function build_uri函数中,在 $uri = ''; 的下面增加 $weburl = 'http://'.$_SERVER['SERVER_NAME'].'/';
再把下面return $uri;替换成return $weburl . $uri;
找到图片格式化函数get_image_path 把return $url;
- return (strpos($url, 'http://') === false && strpos($url, 'https://') === false) ? 'https://www.xiariboke.net/'.$url : $url;
修改好以后就是下面这个样子了:
- function get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false) { $url = emptyempty($image) ? $GLOBALS['_CFG']['no_picture'] : $image; return (strpos($url, 'http://') === false && strpos($url, 'https://') === false) ? 'https://www.xiariboke.net/'.$url : $url; }
三,再来介绍一下 ecshop 商品详情页里面的图片如何改为绝对路径。
这个就更简单了,直接在数据库里面进行修改,打开 phpmyadmin,执行如下的 sql 语句:
- update ecs_goods set goods_desc=replace (goods_desc,'src="/images/upload/','src=" http://www.xiariboke.net/images/upload/')
如果没有 phpmyadmin 的话,还可以在 ecshop 后台》数据库管理》SQL查询里面去执行。
注意点:不管对 ecshop 文件修改还是对 mysql 数据库修改,还是老样子,一定要记得提前进行文件与数据库的备份,对了,这些相对路径改为绝对路径,许多人不明白究竟是要干嘛,为什么一定要这样修改,实际上根本不用这样修改,只是夏日博客遇到这样的一个项目,就是客户要求程序与图片进行分享来减轻服务器的压力,把所有的广告图片甚至产品图片保存到了另外的一个服务器上面,所以没办法,只好将当前 ecshop 站点的图片路径更改为另一个站点了,而另一个站点只负责保存图片,当然,除了图片更改为绝对路径外,还有附件也都可以更改,我们可以举一反三。