根据产品切换运输方式

时间:2010-12-17 17:00:13

标签: magento shipping magento-1.4

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

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

我想我可以通过黑客攻击各个发货模块来做到这一点,但我想以“正确”的方式做到这一点。

2 个答案:

答案 0 :(得分:3)

运输方法在Mage_Shipping_Model_Carrier_Abstract中内置了方法,它们都扩展了:

 public function isActive();

扩展您的送货方式并将您的逻辑添加到该方法,不要忘记调用parent :: isActive();第一

答案 1 :(得分:0)

尝试并尝试实现自定义覆盖,当我将整个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函数的开头。