文档章节

Ecshop 二次开发笔记

土龙
 土龙
发布于 2013/12/07 19:11
字数 1085
阅读 822
收藏 6

1、因为官网下载每次都要输入名字和电话,稍微有点麻烦,所以传到网盘上去了,gbk版本就是只有中文版,utf8版本就是又有中文版又有英文版
ecshop gbk版本下载地址 http://pan.baidu.com/s/1xiQAl
ecshop utf8 版本下载地址http://pan.baidu.com/s/1O5sC  


2、Strict Standards: Non-static method cls_image::gd_version() should not be called statically in C:Apache2.2htdocsyecshopincludeslib_base.php on line 347
找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错。这时候只要:
将function gd_version()改成static function gd_version()即可。 这个是版本兼容问题,新版的php要求更严格

3、是否支持JPEG 显示不支持 这个是环境检查代码的一处错误 

install/includes/lib_installer.php中第98行,JPEG写成了JPG,正确的应该是:

$jpeg_enabled = ($gd_info['JPEG Support'] === true) ? $_LANG['support'] : $_LANG['not_support'];

不改的话其实对功能也没有影响。

4、Strict standards: Only variables should be passed by reference in D:\wamp\www\ecshop\includes\lib_main.php on line 132 

解决办法:
D:\wamp\www\ecshop\includes 下cls_template.php 418行
$tag_sel = array_shift(explode(' ', $tag));

$tag_sel = array_shift(explode(' ', $tag));

改成: 

$tag_arr = explode(' ', $tag); 
$tag_sel = array_shift($tag_arr);

修改完之后问题还是没有最终解决,因为还是有其他的地方报同样的错误,这是由于ecshop使用的是老版本的php,而php5.3之后就不再支持上面的写法。 

解决办法之一就是给wampserver配置多个版本的php,但是这样比较麻烦,最后找了个偷懒的办法,下载老版本的wampserver,找一个php的版本为5.2的,问题最终是解决了,同一个操作系统下可以装多个版本的wampserver。
我把老版本的wampserver传到了百度的云盘里。地址如下:
http://pan.baidu.com/s/1FzTmK
版本信息为:php5.2.6,mysql5.0.51b,apache2.2.8 

4.1 Strict standards: Redefining already defined constructor for class alipay

原因是PHP4中构造方法是一个与类同名的方法,而从PHP5开始,用__construct()做为构造方法,但仍然支持PHP4的构造方法,如果同时使用而且同名方法在前的话,则会报错,将同名的方法放到构造方法之后即可解决。

class alipay
{
    function __construct()
    {
        $this->alipay();
    }
    function alipay()
    {
    }

4.2 Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings

解决办法是编辑php.ini文件,搜索 date.timezone 前面的 分号去掉。date.timezone = "Asia/Shanghai",修改完后 重启 apache

5、做团购时需要增加一个图片字段,一开始叫做googs_img, 但是之后访问首页时报错:Column 'goods_img' in field list is ambiguous,这个错误就是由于不同表中有相同字段,查询的时候又在一起没有区分。解决办法就是修改下新增字段的名字比如改成group_goods_img 

6、smarty中获取遍历次数和截取字符串:

<div class="head mt20">热销商品排行</div>
<div class="body" style="padding:0; width:228px">
	<ul class="sales-ranking">
		<!-- {foreach name=top_goods from=$top_goods item=goods}-->
			<li><a class="num-{$smarty.foreach.top_goods.iteration}" href="{$goods.url}">{$goods.goods_name|truncate:13}</a></li>
		<!-- {/foreach} -->
	</ul>
</div>

7、smarty中使用判断语句,包括if,else,elseif,相等,不相等

<!-- {if $group_buy.status eq 0} 未开始 -->
	{$lang.gbs_pre_start}
<!-- {elseif $group_buy.status eq 1} 进行中 -->
	<a class="buy-01" href="javascript:void(0);" onclick="gb_submit()"></a> 
<!-- {else} 已结束 -->
	<span class="buy-02"></span> 
<!-- {/if} -->

<!-- {if $group_buy.status ne 1} 非进行中 -->
	<em class="gray-bg"></em>
<!-- {/if} -->

大于 gt,小于lt,大于等于gte,小于等于lte

8、"high" == 0 竟然是true,不能这样用, 判断某个字符串不存在的时候,可以赋值为空,不要赋值为0,比如下面的代码:

$_REQUEST['level'] = isset($_REQUEST['level']) ? $_REQUEST['level'] : 0;

可以写为

$_REQUEST['level'] = isset($_REQUEST['level']) ? $_REQUEST['level'] : "";

否则,赋值为0之后,在进行字符串判断的时候都是true,比如:

$level=0
{if $level eq "high"} 为true

原因是php在判断字符串与整数是否相等时会先进行类型的转换,字符串转换为整数时是0,0==0所以为true

9、smarty中判断数组长度是否为0

{if $specification|@count neq 0 }
{/if}

10、日期时间格式处理

$row['add_time']     = local_date('Y-m-d H:i:s', $row['add_time']);

11、增加锚点,使得评论和咨询翻页时还是能跳到第一条内容,href和onclick可以同时使用

<div class="comment-box02" id="comment_body">
<a href="#comment_body" onclick="{$pager.page_first}">首页</a>

12、ecshop有些配置参数写在了data/config.php上面,比如 DOMAIN,数据库参数等。这个文件是安装时通过lib_installer.php 生成的


© 著作权归作者所有

共有 人打赏支持
土龙

土龙

粉丝 37
博文 121
码字总数 35963
作品 2
咸宁
ecshop网店前对ecshop修改的讲究

如何开ecshop网店,这个问题非常重要,用ecshop开网店的朋友都应该注意,一个站的运营,在运营前的二次开发当然重要。也格外重要,但是每个 人都应该清楚,ecshop只适合做中小型网店,也就是说...

Android1989
2014/08/14
0
0
ECSHOP登录自动退出问题解决

最近进行ecshop二次开发,可以说是碰到了很多问题,最让人苦恼的是ecshop会员登录和管理员登录不了后台,或者是登录之后就自动退出。 一般这种情况在本地是好好的,为什么上传到服务器就不行...

skq
2013/06/08
0
1
如何禁用ECSHOP缓存,如何关闭ECSHOP缓存

熟悉ECSHOP的老站长们都知道,ECSHOP是有缓存机制的。 ECSHOP的缓存机制从一定程度上可以减少ECSHOP反复读取数据库的几率,从而一定程度上降低服务器负担,提高访问速度。 但是启用缓存机制,...

Surjur
2015/04/30
0
0
在ecshop商品列表页加一个购买数量输入框

我们在使用ecshop的时候,特别是批发站。 很多时候不能在ecshop商品列表页输入购买数量,是非常不方便的。 现在如果一次性购买好几个商品,十分的不方便,只有在ecshop的商品详细页面才能输入...

路边拾草人
2011/12/14
0
2
ecshop 实现“精品、新品、热销”板块出现选项卡效果的方法

最近做一个网络商城,直接使用ecshop的免费模板,懒得重新做,ecshop建站多日了,一直想在主页的板块中建网页选项卡鼠标经过自动切换效果,百度搜索这方面的内容也没找到合适的,今天一实验,...

小果果x
2014/12/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
8
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
12
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
20
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部