我希望能够根据购物车中的物品切换使用哪种运输方式。哪里是“检查”这个并选择正确的运输方式的最佳地点?
它的工作方式是使用标准的运输方式,然后,如果购物车中有某些物品,另一种方法将覆盖另一种方法。
我想我可以通过修改各个运输模块来做到这一点,但我想以“正确”的方式做到这一点。
我希望能够根据购物车中的物品切换使用哪种运输方式。哪里是“检查”这个并选择正确的运输方式的最佳地点?
它的工作方式是使用标准的运输方式,然后,如果购物车中有某些物品,另一种方法将覆盖另一种方法。
我想我可以通过修改各个运输模块来做到这一点,但我想以“正确”的方式做到这一点。
运输方法在 Mage_Shipping_Model_Carrier_Abstract 中内置了它们都扩展的方法:
public function isActive();
扩展您的运输方法并将您的逻辑添加到该方法中,并且不要忘记调用 parent::isActive(); 第一的
尝试和尝试就像我实现自定义覆盖一样,我只有在将整个 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 函数的开头。