首页 » ZenCart » ZenCart教程 » 阅读文章
[改进版][3月31日修正]ZenCart修改订单号个性格式(2年+2月+2日+2时+2位递增数)
标签:ZenCart修改订单号
zencart订单号默认是从0开始的,这样给客户一你网站是新站没什么可信度的感觉,虽然可以通过后台将开始号码改为自己的指定值开始,但是还是不够个性,不够人性化。今天介绍一种将订单号改为前缀+时间+随机数格式
这篇文章参考zencart中文社区,并在其基础上做了修改
方案介绍
方案一:增加非数字前缀 (我原来的修改方式)
这个需要修改数据表,而且zencart有很多文件将order_id强制整型了,必须修正,代价太高修改文件太多不可取
方案二:4位年+月+日+时+分+秒+4位随机数 (我原来的修改方式)
由于32位系统整型最大数为2147483647,明显这种格式超出范围了,32位系统不兼容不可取
方案三:2年+2月+2日+2时+2位递增数 (推荐)
缺点:当每小时内订单超过100单时,会订单重复 (这个缺点可忽略不计了,你有本事每小时产生100订单,完全可以挑选64位系统然后再补充递增数或者随机数)
效果图
修改方法
2.打开includes\classes\order.php,查找
function create($zf_ot_modules, $zf_mode = 2) { global $db;
其上增加
/** * [get_timezone_offset 当前时区与美国时区时间差] * 作用:统一订单时区,避免网站迁移后空间时区问题造成的订单冲突 */ function get_timezone_offset() { $origin_tz='America/New_York'; //中国时区 Asia/Shanghai $remote_tz=date_default_timezone_get(); $origin_dtz = new DateTimeZone($origin_tz); $remote_dtz = new DateTimeZone($remote_tz); $origin_dt = new DateTime("now", $origin_dtz); $remote_dt = new DateTime("now", $remote_dtz); $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt); return $offset; } /** * [create_order_number 生成订单号] */ function create_order_number(){ global $db; $time=time()+$this->get_timezone_offset(); $order_prefix=date('ymdH'); $check=$db->Execute("SELECT orders_id FROM ".TABLE_ORDERS." WHERE orders_id like '".$order_prefix."%' ORDER BY orders_id DESC LIMIT 1"); $order_number= $check->fields['orders_id'] ? $check->fields['orders_id']+1 : $order_prefix.'01'; return $order_number; }
然后,其下增加
$order_number=$this->create_order_number();
查找
if ($_SESSION['shipping'] == 'free_free') { $this->info['shipping_module_code'] = $_SESSION['shipping']; }
其下的$sql_data_array增加orders_id键值内容
$sql_data_array = array( 'orders_id' => $order_number,
查找
$insert_id = $db->Insert_ID();
修改为
$insert_id =$order_number;
本人测试时zencart1.5.1修改样本
order.rar (11.2 KB, 390 次)
声明: 本文由Ezencart原创,转载请保留链接:[改进版][3月31日修正]ZenCart修改订单号个性格式(2年+2月+2日+2时+2位递增数)
评论 共8条 (RSS 2.0) 发表评论
博主,我把你的文件覆盖我到我的网站,点击订单编辑出现 错误: 订单不存在. LN_20130612153635_1111,而我在数据库看,在数据库中是有订单号的,这是怎么回事?
当时考虑的简单,好多地方order_id被强制为整形数据
我也是订单编辑出现 错误: 订单不存在 那要怎么修改呢
已更新
已修正bug
你好,我装了你这个之后,貌似顾客都无法完成付款,而且订单状态出现异常,比如,顾客下单后本来状态是待处理-pending状态,结果之前的全部订单状态也都变成pending了(我是后面装的,不是网站一上线装的),然后顾客再下单,订单状态是declined, 之前的一批也都变成declined了。博主能不能帮忙下怎么解决啊,或者怎么卸载这个插件啊?谢谢先。。。
博主,我也出现这问题,还有貌似用rp通道,参数传过去出错。
citizen forma