在购物车页面和 onepagecheckout 页面应用优惠券代码后如何删除免费送货方式?
问问题
2550 次
2 回答
2
您可以在促销 > 购物车价格规则中设置优惠券代码的价格规则
为优惠券设置条件,它们仅在Shipping Method 不是 [freeshipping] Free时才有效
这不会隐藏免费送货选项,但在选择免费送货选项时优惠券代码将不起作用(它会在选择时删除优惠券代码。)。
如果您想从一页结帐中完全删除该选项,则需要对其进行编码。(我不知道任何其他方式)这样的事情应该有效:
<?php
$coupon = Mage::getSingleton('checkout/session')->getQuote()->getCouponCode();
if(!$coupon) {
FREE SHIPPING CODE FROM ONEPAGECHECKOUT IN HERE, IF NO COUPON CODE FOUND.
}
?>
于 2013-07-24T15:38:40.663 回答
1
我使用以下方法解决了这个问题,因此发布以防其他人正在寻找。复制以下文件:
/app/code/core/Mage/Shipping/Model/Carrier/Freeshipping.php
到您的本地文件夹,创建目录,因此您有:
/app/code/local/Mage/Shipping/Model/Carrier/Freeshipping.php
然后替换第 70 到 86 行,如下所示:
if (($request->getFreeShipping())
|| ($request->getBaseSubtotalInclTax() >=
$this->getConfigData('free_shipping_subtotal'))
) {
$method = Mage::getModel('shipping/rate_result_method');
$method->setCarrier('freeshipping');
$method->setCarrierTitle($this->getConfigData('title'));
$method->setMethod('freeshipping');
$method->setMethodTitle($this->getConfigData('name'));
$method->setPrice('0.00');
$method->setCost('0.00');
$result->append($method);
}
...具有以下内容:
if (($request->getFreeShipping())
|| ($request->getBaseSubtotalInclTax() >=
$this->getConfigData('free_shipping_subtotal'))
) {
$coupon = Mage::getSingleton('checkout/session')->getQuote()->getCouponCode();
$totals = Mage::getSingleton('checkout/session')->getQuote()->getTotals();
if(isset($totals['discount'])) {
$discount = abs($totals['discount']->getValue()); // Discount value if applied
} else {
$discount = '';
}
// No free shipping if coupon used, unless GRAND total is still over free-shipping limit
if(!$coupon || $coupon && ($totals['subtotal']->getValue() - $discount) > $this->getConfigData('free_shipping_subtotal')) {
$method = Mage::getModel('shipping/rate_result_method');
$method->setCarrier('freeshipping');
$method->setCarrierTitle($this->getConfigData('title'));
$method->setMethod('freeshipping');
$method->setMethodTitle($this->getConfigData('name'));
$method->setPrice('0.00');
$method->setCost('0.00');
$result->append($method);
}
}
现在,如果使用优惠券代码,Magento 会在应用之前检查 GRAND 总额是否仍高于免费送货阈值。
于 2017-11-14T13:59:18.550 回答