上述解决方案基本上是正确的,但如果您可以避免修改任何核心代码,您真的应该避免修改任何核心代码。在对 prestashop 或我的主题引擎进行任何升级后,我将所有的 mod 放在本地的一个特殊文件夹中,然后我将修改一一上传(在每个都经过测试之后)。
这些说明适用于 1.6.x 用户 - 但可能适用于 1.5.x - 我没有要测试的代码。
1) 创建一个名为 order.php 的文件并将下面的代码放入该文件中
2)接下来,将文件上传到/override/classes/order/order.php
3) 导航到 /cache 文件夹并删除文件 class_index.php(它将在下一个页面请求时重新创建)
<?php
/*
* RETURN ORDER REFERENCE TO SEQUENTIAL NUMERIC VALUE
*
* 2016 PrestaShop v1.6.1.x
* Override by obewanz
*
* You can use the following SQL query to change the starting order no if desired
* where the number 101 is the next desired order number:
* ALTER TABLE `ps_orders` AUTO_INCREMENT = 101
* --------------------------------------------
* OPTION: (ALL NUMERIC)
* str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
* OPTION SET TO ORIG 1.5.x STYLE REFERENCE NUMBERS:
* str_pad((int)$last_id + 1, 6, '000000', STR_PAD_LEFT);
*/
Class Order extends OrderCore {
public static function generateReference() {
$last_id = Db::getInstance()->getValue('SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 9, 'NR-000000', STR_PAD_LEFT);
}
}
您现在应该完成了,您的下一个订单将有一个类似的参考:NR-000101
代码 cmets 中的第二个“OPTION”将订单参考号返回到本质上是 PS 1.5.x 的那个 - (我在旧文件中引用了它。)
如果需要,我还在代码 cmets 中包含了适当的 SQL 语句来设置下一个订单号。