Moonsea +

Ecshop 开发问题汇总

写在前面

本文记录在Ecshop开发和使用过程中遇到的各种问题以及解决方法

安装时提示:gd_version()

找到install/includes/lib_installer.php中的第31行return ls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错

问题: 安装Ecshop时,出现错误提示信息Strict Standards: Non-static method cls_image::gd_version() should not be called statically Gd-Version

方案: 下面两种方法选择一种即可

$p = new cls_image(); return $p->gd_version();

JEPG显示不支持

查看发现有libjpeg.lib库,GD2库也有,都加载了,也都正常。查看ecshop源代码发现install/includes/lib_installer.php中第98行,JPEG写成了JPG

问题: 环境检测显示JEPG不支持 jpeg-unsupport

方案:将第98行代码改成如下形式

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

错误警告preg_replace()

安装Ecshop完成之后,访问前台页面,会提示警告信息 Deprecated: preg_replace(): The /e modifier is deprecated

问题: 错误警告 Deprecated: preg_replace(): The /e modifier is deprecated Preg-Replace

方案: 打开includes\cls_template.php,跳转到第300行,将

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

替换成

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

重新访问页面就解决了

错误警告:Only variables

安装完成之后,访问前台首台,出现警告信息Strict standards: Only variables should be passed by reference

问题:错误警告Strict standards: Only variables should be passed by reference Only-Variable

方案:PHP 5.3以上版本的问题,和配置有关.只要includes\cls_template.php418

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

拆成两句就没有问题了

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

或者直接修改PHP配置文件php.ini451行,将

error_reporting = E_ALL

改成

error_reporting = E_ALL

重新启动服务即可

Ecshop后台mktime()错误警告

安装完成之后,登录系统后台访问“商店设置”时,系统报错,提示mktime(): You should be using the time() function instead in.这是因为PHP版本的问题,mktime()不带参数被调用时,会被提示错误.

问题:错误警告mktime(): You should be using the time() function instead in Mktime

方案:根据错误提示找到相应错误所在的文件,并且定位到问题代码,将

$auth = mktime();

替换成

$auth = time();

刷新页面就可以了

后台管理各页面功能备注

htm

templates/index.htm:后台主界面,通过<frameset></frameset>来实现页面分块

php

common.php:后台基本显示语言

数据库修改记录和使用说明

goods

goods: 添加unit字段作为商品单位
goods: 添加goods_bar_code字段作为商品条形码
goods: 添加goods_max_buy字段作为限购数量
goods: 添加goods_min_buy字段作为最低购买量
goods: 添加goods_bind_type字段作为装订类型
goods: 添加goods_composite_page字段作为合成图片格式:0:单页,1:跨页
goods: 添加goods_composite_pic字段作为合成图片格式:0:jpg,1:png
goods: 添加goods_gray字段作为灰度特效:0:不启用,1:启用
goods: 添加goods_composite_pdf字段作为合并为pdf:0:否,1:是
goods: 添加goods_album字段作为画册选项:0:硬壳,1:软壳,2:皮革
goods: 添加goods_add_page_start字段作为起始页数
goods: 添加goods_add_page_max字段作为最大页数
goods: 添加goods_add_page_unit字段作为加页单位
goods: 添加is_text_on字段作为开启文本
goods: 添加is_pic字段作为开启用户图片
goods: 添加is_background字段作为开启背景
goods: 添加is_gif字段作为开启剪贴画
goods: 添加is_border字段作为开启边框
goods: 添加is_mask字段作为开启蒙版
goods: 添加is_format字段作为开启版式
goods: 添加is_textvr字段作为开启竖排文字
goods: 添加goods_line_min字段作为最小行距
goods: 添加goods_line_max字段作为最大行距
goods: 添加goods_line_up_unit字段作为行距递增单位
goods: 添加goods_defination字段作为分辨率
goods: 添加goods_inner_width字段作为内页设计宽度
goods: 添加goods_inner_height字段作为内页设计高度
goods: 添加goods_blood_h字段作为普通页水平出血
goods: 添加goods_blood_v字段作为普通页垂直出血
goods: 添加goods_safe_line字段作为安全线
goods: 添加goods_inner_type字段作为内页材质
goods: 添加goods_size_width字段作为尺寸-宽
goods: 添加goods_size_length字段作为尺寸-长

2016-04-28整理商品(规格)管理所需要字段


goods:goods_id字段作为商品id
goods:goods_sn字段作为商品编号
goods:goods_name字段作为商品名称
goods:goods_brief字段作为商品简介
goods:goods_bind_type字段作为装订类型:取自goods_bind_type
goods:shop_price字段作为商品价格
goods:goods_thumb字段作为商品相册
goods:goods_add_page_max字段作为商品最大页数
goods:goods_composite_page字段作为合成图片格式:0:单页,1:跨页
goods:goods_composite_pic字段作为合成图片格式:0:jpg,1:png
goods:goods_gray字段作为灰度特效:0:不启用,1:启用
goods:goods_composite_pdf字段作为合并为pdf:0:不启用,1:启用
goods:goods_inner_type字段作为内页材质:取自material_type
goods:goods_size_width字段作为尺寸-宽
goods:goods_size_length字段作为尺寸-长
goods:add_time字段作为商品添加时间
goods:last_update字段作为最后更新时间

ecs_goods_bind_type

新建ecs_goods_bind_type装订类型表

type_id:类型id
type_name:类型名称

ecs_material_type

新建ecs_material_type材质类型表

type_id:类型id
type_name:类型名称
remark:备注

admin_user

admin_user: 添加invitation_code字段作为邀请码
admin_user: 添加phone字段作为手机号码
admin_user: 添加company字段作为所属部门
admin_user: 添加bank_card字段作为银行卡号

order_info

order_info:添加invitation_code字段作为邀请码
order_info:order_status字段作为印刷厂是否处理:0:未确认,1:已确认
order_info:添加print_status字段作为印刷厂订单是否打印:0:未打印订单,1:已打印订单
order_info:添加download_status字段作为印刷厂订单是否下载:0:未下载订单,1:已下载订单
order_info:pay_status字段作为用户付款状态:0:未付款:2:已付款
order_info:user_id字段作为用户名称:用户下单时存入当前登录用户名称 order_info:invoice_no字段作为快递单号
order_info:user_name字段作为下单用户姓名:用户下单时写入

order_goods

order_goods:添加bind_type字段作为装订类型
order_goods:添加material_type字段作为材质
order_goods:添加goods_height字段作为尺寸-长
order_goods:添加goods_width字段作为尺寸-宽
order_goods:添加goods_page_count字段作为商品页数
order_goods:添加goods_url字段作为电子稿下载地址

ecs_product_yzldiy

product_yzldiy:pid字段作为模板编号
product_yzldiy:cid字段作为类别:product_category_yzldiy表中的id
product_yzldiy:preview字段作为预览图
product_yzldiy:mbDes字段作为模板描述
product_yzldiy:name字段作为模板名称
product_yzldiy:status字段值为1
product_yzldiy:tid字段值为00001

ecs_product_category_yzldiy

product_category_yzldiy:id字段作为模板类别编号
product_category_yzldiy:name字段作为模板类别名称
product_category_yzldiy:info字段作为类别说明

ecs_product_yzldiy_gallery

新建ecs_product_gallery材质类型表

img_id:图片id
pid:模板id:ecs_product_yzldiy中的pid
img_url:图片url

时间戳数据库处理

/* 添加按照付款时间每日分组 */
$group = " GROUP BY FROM_UNIXTIME(oi.pay_time,'%y-%m-%d')";

/* 查询距添加代理用户第几天 */
$sql = "SELECT TO_DAYS(FROM_UNIXTIME(oi.pay_time)) - TO_DAYS(FROM_UNIXTIME(au.add_time)) AS day_num, ";

/* 查询每日订单数 */
$sql = $sql . " COUNT(oi.order_id) AS order_sum_day, ";

/* 查询每日产品数 */
$sql = $sql . " COUNT(og.goods_id) AS product_sum_day ";

参考资料

[1]Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
[2]安装Ecshop首页出现报错:Only variables should be passed by referen

Blog

Opinion

Project