如何在购物车页面以及onepagecheckout页面中应用优惠券代码后删除免费送货方式?
答案 0 :(得分:2)
您可以在促销活动>中设置优惠券代码的价格规则购物车价格规则
如果送货方式不是[免费提供]免费
,请设置仅适用的优惠券的条件这不会隐藏免费送货的选项,但选择免费送货选项时优惠券代码将无法使用(选择时会删除优惠券代码。)。
如果要从一个页面结帐中完全删除该选项,则需要对其进行编码。 (我不知道其他任何方式) 这样的事情应该有效:
<?php
$coupon = Mage::getSingleton('checkout/session')->getQuote()->getCouponCode();
if(!$coupon) {
FREE SHIPPING CODE FROM ONEPAGECHECKOUT IN HERE, IF NO COUPON CODE FOUND.
}
?>
答案 1 :(得分: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总额是否仍然高于免费送货限额。