【问题标题】:Magento - remove shipping & handling when using FreeshippingMagento - 使用 Freeshipping 时删除运输和处理
【发布时间】:2012-10-08 16:19:27
【问题描述】:

我有以下问题:我必须使用主要的运输方式。第一个对 200 美元以下的订单收取 10 美元的运费。第二种方式是默认的freeshipping,适用于200美元以上的订单。

当应用免费送货时,运输和处理小计显示 0.00,我不希望该行既不在结帐也不在发票中显示。

在使用免费送货时,有什么方法可以完全移除运输和装卸线?

提前感谢您的任何想法。

【问题讨论】:

    标签: php magento checkout shipping


    【解决方案1】:

    我不喜欢用代码过滤这样的东西。所以我想出了一个解决方案,覆盖 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>
    

    【讨论】:

      【解决方案2】:

      从购物车和结帐中删除运输线,您可以覆盖此方法 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 2011-12-06
        • 2014-11-26
        • 1970-01-01
        • 2013-04-21
        相关资源
        最近更新 更多