【发布时间】:2012-10-08 16:19:27
【问题描述】:
我有以下问题:我必须使用主要的运输方式。第一个对 200 美元以下的订单收取 10 美元的运费。第二种方式是默认的freeshipping,适用于200美元以上的订单。
当应用免费送货时,运输和处理小计显示 0.00,我不希望该行既不在结帐也不在发票中显示。
在使用免费送货时,有什么方法可以完全移除运输和装卸线?
提前感谢您的任何想法。
【问题讨论】:
标签: php magento checkout shipping
我有以下问题:我必须使用主要的运输方式。第一个对 200 美元以下的订单收取 10 美元的运费。第二种方式是默认的freeshipping,适用于200美元以上的订单。
当应用免费送货时,运输和处理小计显示 0.00,我不希望该行既不在结帐也不在发票中显示。
在使用免费送货时,有什么方法可以完全移除运输和装卸线?
提前感谢您的任何想法。
【问题讨论】:
标签: php magento checkout shipping
我不喜欢用代码过滤这样的东西。所以我想出了一个解决方案,覆盖 Mage_Sales_Model_Quote_Address_Total_Shipping::fetch(Mage_Sales_Model_Quote_Address $address)
app/code/local/Me/MyModule/Model/Sales/Quote/Address/Total/Shipping.php:
<?php
class Me_MyModule_Model_Sales_Quote_Address_Total_Shipping
extends Mage_Sales_Model_Quote_Address_Total_Shipping
{
/**
* Add shipping totals information to address object
*
* @param Mage_Sales_Model_Quote_Address $address
* @return Mage_Sales_Model_Quote_Address_Total_Shipping
*/
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
if ($address->getShippingAmount() == 0) {
return $this;
}
return parent::fetch($address);
}
}
app/code/local/Me/MyModule/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Me_MyModule>
<version>0.0.1</version>
</Me_MyModule>
</modules>
<global>
<models>
<me_mymodule>
<class>Me_MyModule_Model</class>
</me_mymodule>
<sales>
<rewrite>
<quote_address_total_shipping>Me_MyModule_Model_Sales_Quote_Address_Total_Shipping</quote_address_total_shipping>
</rewrite>
</sales>
</models>
</global>
</config>
app/etc/modules/Me_MyModule.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Me_MyModule>
<active>true</active>
<codePool>local</codePool>
</Me_MyModule>
</modules>
</config>
【讨论】:
从购物车和结帐中删除运输线,您可以覆盖此方法 Mage_Checkout_Block_Cart_Totals::renderTotal()
public function renderTotal($total, $area = null, $colspan = 1)
{
$code = $total->getCode();
if ($total->getAs()) {
$code = $total->getAs();
}
if ($code == 'shipping' && $total->getValue() == 0) {
return '';
}
return $this->_getTotalRenderer($code)
->setTotal($total)
->setColspan($colspan)
->setRenderingArea(is_null($area) ? -1 : $area)
->toHtml();
}
更多参考请查看此链接http://www.magentocommerce.com/boards/viewthread/295412/#t410854
【讨论】: