我提供免费的在线送货,订单总额超过75美元,提供这种折扣的过程是直接的。
我将很快在我的库存中添加一些庞大的项目,需要免除免费送货折扣,因为如果买家不支付运费,这些项目的运费将导致交易损失。
在开放式购物车中,我如何免除某些项目的“免费送货超过$75”政策?我猜这将不得不在代码中完成,但我不确定在哪里查找。
发布于 2012-11-21 20:37:04
实际上,使用标准的交付扩展在OpenCart中提供免费交付的过程是愚蠢的。它为客户提供了计算送货或免费送货的选择!这只有在交付方式不同时才有意义--即免费交付速度较慢。
由于你想免除购买的免费送货,而不是有更低价格的送货选择,我假设目前当任何客户选择免费送货时,你只是多赚一点钱。
我强烈建议您将这两条规则合并为一个发货扩展。这不仅允许您删除免费送货率,而且不会显示付费送货选项,因为这将是愚蠢的。
你在哪里可以找到这段代码?
Admin部分中的每个发货计算选项都是发货扩展。它被分成五个文件。
逻辑在catalog\model\shipping中,管理控件在admin\controller\shipping和admin\view\template\shipping中。在catalog\language\english\shipping和admin\language\english\shipping中也有语言。在所有这些文件夹中,文件名应该是相同的。
你可以添加你自己的发货扩展,方法是从你现有的‘免费’发货扩展中获取文件,并用新的文件名和匹配的类名复制它们,或者你可以修改你现有的扩展名。
如果你从一个现有扩展的副本创建你的扩展,不要忘了相应地修改类名(例如更改ModelShippingFree,ControllerShippingFree中的自由部分以匹配你的文件名)。
因为我总是使用特定于商店的规则,所以我总是以商店的名字来命名这些文件。这也使得哪一个应该是活动的变得更加明显。
在你陷入编写代码的泥潭之前,先弄清楚你理想的组合规则应该是什么伪代码,例如,如果你对非大件产品有一个统一的费率,而你实际上只对大件产品设置了大于0的权重,它应该是这样的:
如果总重量>0,则成本= subtotal>75 +(1*总重量),如果总重量>0,则cost=0 = cost=10
查看所有现有的扩展,例如你可以使用和调整的代码,找出哪些值你喜欢硬编码,哪些值需要在Admin设置中进行调整。
(您可以从$this->cart->getWeight获得总权重,从$this->cart->getTotal()获得小计)
如果您已经在使用weight,那么除非您仍然可以看出购物车中有一个笨重的产品,因为总重量太高,否则编码就会变得更加困难。你将不得不逐步通过购物车中的每个项目,并添加“大”的产品,以匹配一些其他模式。首先看一下可以在OpenCart中编辑的字段。
最后,为了避免意外,不要忘记更改您的文本屏幕,以说明免费送货不适用于大件物品,并更改您的产品屏幕,以显示产品是笨重的,并且免除免费送货。
发布于 2012-11-21 01:02:22
在标准的OC设置中,这是不可能的。你需要在某种标志中编码,你可以将产品设置为排除,然后在免费送货扩展的模型文件中,你必须对其进行重新编码,以计算没有该标志的商品的成本。标准购物车只使用$this->cart->getTotal(),它不会排除已标记的商品
https://stackoverflow.com/questions/13477763
复制相似问题