4

我已从System->Configration->Shipping Methods启用免费送货,并将最小订单金额设置为 50,但它不起作用

我也想知道为什么这个条件if($request->getFreeShipping())总是返回 false

4

3 回答 3

11

实际上,我自己也遇到了这个问题,并且偶然发现了这个问题。对我来说,这是因为购物车小计未正确加载到位于以下路径的 Freeshipping.php 文件中。

文件路径:

/app/code/core/Mage/Shipping/Model/Carrier/Freeshipping.php

现在,复制此文件:

/app/code/core/Mage/Shipping/Model/Carrier/Freeshipping.php

到这个文件位置

/app/code/local/Mage/Shipping/Model/Carrier/Freeshipping.php

找到有这个的行

    if (($request->getFreeShipping())
        || ($request->getBaseSubtotalInclTax() >= $this->getConfigData('free_shipping_subtotal'))

并用这个替换它

    $totals = Mage::getSingleton('checkout/cart')->getQuote()->getTotals();
    $subtotal = $totals["subtotal"]->getValue();

    if (($request->getFreeShipping())
        || ($subtotal >= $this->getConfigData('free_shipping_subtotal'))
于 2013-12-07T02:25:16.083 回答
4
  1. 确保适用的国家/地区正确无误
  2. 确保产品不含税价格在50以上
  3. 刷新缓存(配置缓存应该够用了)

完成所有这些后,免费送货应该可以工作。

于 2013-08-28T13:24:15.207 回答
2

我已经在 magento 1.7.0.2 上实现了 Calvin K 的上述答案,它立即解决了我们的问题。

但是,不要更新文件,而是首先确保复制文件并将其上传到:

/app/code/本地/Mage/Shipping/Model/Carriers/Freeshipping.php

这样您就不会修改核心 Magento 代码。

于 2014-01-03T18:48:52.727 回答