【问题标题】:Magento - Hide a delivery method if order total less than n?Magento - 如果订单总数小于 n,则隐藏交付方式?
【发布时间】:2015-05-22 14:04:35
【问题描述】:

我有两种送货方式,统一费率 1 和统一费率 2。

如果订单总额低于 15.00 美元,我想隐藏统一费率 1。

如何在 Magento 中做到这一点?

【问题讨论】:

标签: php magento magento-1.8


【解决方案1】:

您可以在模板中执行此操作。您可以在 app/design/frontend/base/default/template/checkout/onepage/shipping_method/available.phtml 中添加条件

希望这会有所帮助。

问候,大卫

【讨论】:

    【解决方案2】:

    为 sales_quote_address_collect_totals_after 事件创建一个模块并注册一个观察者:

    public function hideFlatRate1($observer)
    {
        $quoteAddress = $observer->getQuoteAddress();
        $quote = $quoteAddress->getQuote();
        $total = $quote->getGrandTotal();
    
        if ($total < 15){
            $store = Mage::app()->getStore($quote->getStoreId());
            $storeId = $store->getId();
            $store->setConfig('carriers/flat_rate1/active', 0);
        }
    
    }
    

    基本上,当 sales_quote_address_collect_totals_after 事件在 Mage_Sales_Model_Quote_Address 的第 1009 行的 collectTotals 方法中调度时,会通知此观察者。在单页结账时,当您提交收货地址时,会调用此方法来获取收货地址的运费。

    【讨论】:

      【解决方案3】:

      Hacky,但我是这样做的。

      在以下文件中...

      • template/msp_flatshipping5/available.phtml
      • 模板/结帐/multishipping/shipping.phtml
      • template/checkout/cart/shipping.phtml

      ...在foreach ($_shippingRateGroups as $code =&gt; $_rates):之后插入这个

      $quote = Mage::getSingleton('checkout/session')->getQuote();
      if($code == 'flatrate' && $quote->getSubtotal() >= 15) continue;
      

      根据需要调整flatrate15

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 1970-01-01
        • 2020-08-09
        相关资源
        最近更新 更多