1

我为总额超过 75 美元的订单提供免费在线送货服务,提供此折扣的过程非常简单。

我很快会在我的库存中添加一些大件物品,需要免除免费送货折扣,因为如果买家不支付运费,这些物品的运费将使交易导致金钱损失。

在 Open Cart 中,我如何免除某些商品的“超过 75 美元免运费”政策?我猜这必须在代码中完成,但我不知道在哪里看。

4

2 回答 2

4

实际上,在 OpenCart 中使用标准运输扩展提供免费送货的过程是愚蠢的。它为客户提供计算交付或免费交付的选择!这只有在交付不同时才真正有意义 - 即免费交付较慢。

由于您想免除购买的免费送货,而不是提供价格较低的送货选项,我假设目前当任何客户在免费送货可用时选择付费送货时,您只需赚更多钱。

我强烈建议您将这两条规则合并为一个运输延期。这不仅可以让您取消免费送货费率,而且在愚蠢的情况下也不会显示付费送货选项。

你在哪里找到这个代码?

管理部分中的每个运费计算选项都是一个运费扩展。这分为五个文件。

逻辑在 中catalog\model\shipping,管理控件在admin\controller\shipping和中admin\view\template\shippingcatalog\language\english\shipping和中还有语言admin\language\english\shipping。在所有这些文件夹中,文件名应该相同。

您可以通过从现有的“免费”运输扩展中获取文件并使用新文件名和匹配的类名复制它们来添加自己的运输扩展,或者您可以破解现有的扩展。

如果您从现有扩展的副本创建扩展,请不要忘记相应地修改类名(例如,更改 中的 Free 部分ModelShippingFreeControllerShippingFree匹配您的文件名)。

因为我总是最终使用特定于商店的规则,所以我总是在商店之后命名这些文件。这也使得哪个应该是活跃的更加明显。

在您陷入编写代码的困境之前,请在伪代码中计算出您理想的组合规则应该是什么,例如,如果您对非大件产品有统一费率并且您实际上只将权重设置为大于0 在体积庞大的产品上,它会是这样的:

如果小计>75,则成本=0,否则成本=10,如果总重量> 0,则成本=成本+(1*总重量)

查看所有现有扩展,例如您可以使用和调整的代码,并找出您喜欢硬编码的值以及需要在管理设置中调整的值。

(您可以从 获得总权重,从 获得$this->cart->getWeight小计$this->cart->getTotal()

如果您已经在使用重量,那么除非您仍然可以分辨出购物车中有一个笨重的产品,因为总重量如此之高,否则编码会变得更加困难。您将不得不逐步浏览购物车中的每件商品,并添加与其他模式匹配的“大件”产品。首先查看您可以在 OpenCart 中编辑的字段。

最后,为避免意外,不要忘记更改您的文本屏幕以提及免费送货不适用于大件商品,并更改您的产品屏幕以显示产品体积大且免运费。

于 2012-11-21T12:37:03.860 回答
1

在标准的 OC 设置中,这是不可能的。您需要在某种标志中编码,您可以设置要排除的产品,然后在免费送货扩展的模型文件中,您必须重新编码以计算没有的商品的成本只有国旗。标准购物车只使用$this->cart->getTotal()不会排除标记项目的

于 2012-11-20T17:02:21.703 回答