【问题标题】:Toggle Shipping Methods Based on ProductsToggle 基于产品的运输方式
【发布时间】:2010-12-17 17:00:13
【问题描述】:

我希望能够根据购物车中的商品切换使用哪种运输方式。哪里是“检查”这个并选择正确的运输方式的最佳地点?

它的工作方式是使用一种标准的运输方式,然后,如果购物车中有某些物品,另一种方法将覆盖另一种方法。

我想我可以通过修改各个运输模块来做到这一点,但我想以“正确”的方式做到这一点。

【问题讨论】:

    标签: magento shipping magento-1.4


    【解决方案1】:

    shipping 方法在 Mage_Shipping_Model_Carrier_Abstract 中内置了它们都扩展的方法:

     public function isActive();
    

    扩展您的运输方法并将您的逻辑添加到该方法中,不要忘记调用 parent::isActive();首先

    【讨论】:

    • @Anton-S 你确定运输模块可以被覆盖吗?我的所有语法都是正确的,但由于某种原因,它没有覆盖我的覆盖中的 isActive() 函数。跨度>
    • 是的,如果运输方式不尊重 parent::isActive();你必须直接覆盖它的类
    • 很抱歉对此感到很紧张,但是“直接覆盖类”是什么意思,我想这就是我现在正在做的事情。你可以在这里看到我的代码:stackoverflow.com/questions/4474502/…
    • 确保你真的覆盖了它,清除缓存检查拼写错误并添加 print_r(get_included_files());到 index.ph 的末尾并查看包含哪些文件以及您的课程是否是其中之一
    【解决方案2】:

    尝试和尝试就像我实现自定义覆盖一样,我只有在将整个 Tablerates.php 文件复制到 local/Mage/Shipping/Model/Carrier/Tablerates.php 时才能找到成功

    isActive() 在那一点上仍然不是“方式”。我不得不在 collectRates() 函数中引入一些代码,如下所示:

           // check the store 
            if (Mage::app()->getStore()->getId() == 2){
    
                // check for free shipping
                $packageValue = $request->getPackageValueWithDiscount();
                $freeShipping = ($request->getFreeShipping()) || ($packageValue >=  Mage::getStoreConfig("carriers/freeshipping/free_shipping_subtotal", $this->getStore()));
                if($freeShipping)
                    return false;
    
                $foundFlag = false;
                foreach ($request->getAllItems() as $item) {
                    $org_product = Mage::getModel('catalog/product')->load($item->getProductId());
                    if($org_product->getDeliveryFlag() == "workstationmats")
                    {
                        $foundFlag = true;
                    }   
                }
    
                if ($foundFlag == false)
                    return false;
            }
            // end shpping mod
    

    这被放置在 collectRates 函数的开头。

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 2022-06-18
      • 2020-01-03
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多