我知道有很多类似问题的答案和问题,但我会在开始时告知。我问的不是我自己的运输方式,而是所有可用的方式。
我找到了一个我曾经做过的代码,奇怪的是:它工作了一段时间 - 不知道我改变了什么,它停止了。
class Oversizeshipping_Model_Observer
extends Varien_Event_Observer
{
public function appendPriceToShipping($observer)
{
$address = $observer->getQuoteAddress();
#Mage::log($address->getAddressType(), Zend_Log::DEBUG, 'event.log', true);
if($address->getAddressType() === $address::TYPE_SHIPPING){
$price = 0;
$resource = Mage::getResourceModel('catalog/product');
foreach($address->getAllItems() as $item) {
try {
$oversizePrice = $resource->getAttributeRawValue($item->getProduct()->getId(), 'oversize_shipping_price', $item->getStoreId());
} catch( Exception $e ) {
$oversizePrice = 0;
}
if($oversizePrice > 0) {
$price += $oversizePrice;
}
}
$address->setShippingAmount($price);
$address->setBaseShippingAmount($price);
$rates = $address->collectShippingRates()
->getGroupedAllShippingRates();
foreach ($rates as $carrier) {
foreach ($carrier as $rate) {
$rate->setPrice((float)$rate->getPrice()+$price);
$rate->save();
}
}
$address->save();
}
}
}
该观察者方法在 sales_quote_address_collect_totals_after 上触发。正如我之前提到的,它有效(甚至在免费送货方式中增加了价格),但它停止了。
有人可以指出我的错字,错过的方法调用或smth吗?