我希望在将某些产品添加到Magento CE 1.7中的购物车时更改某些产品的某些值
我正在尝试使用观察者checkout_cart_add_product_complete
。如果我尝试更改产品名称或产品图片,更改价格(CustomPrice)效果很好,但未保存。
有没有办法在添加到购物车时更改此属性?
public function checkout_cart_add_product_complete(Varien_Event_Observer $observer) {
[...]
// Set new Price
$lastAddedItem->setOriginalCustomPrice($originalProduct->getPrice());
$lastAddedItem->setCustomPrice($originalProduct->getPrice());
// Set Product-Name
$lastAddedItem->setName($originalProduct->getName());
// Set Product-Images
$lastAddedItem->setImage($originalProduct->getImage());
$lastAddedItem->setSmallImage($originalProduct->getSmallImage());
$lastAddedItem->setThumbnail($originalProduct->getThumbnail());
// Save updated Item and Cart
//$lastAddedItem->save();
Mage::getSingleton('checkout/cart')->save();
// Recalc Totals and save
$quote->setTotalsCollectedFlag(false);
$quote->collectTotals();
$quote->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
}
答案 0 :(得分:9)
每次保存(更新)产品时,函数Mage_Sales_Model_Quote_Item :: setProduct都会重置一些基本信息。幸运的是,您可以锁定一个“sales_quote_item_set_product”事件。
config.xml中
<config>
...
<global>
<events>
<sales_quote_item_set_product>
<observers>
<samples>
<type>singleton</type>
<class>samples/observer</class>
<method>salesQuoteItemSetProduct</method>
</samples>
</observers>
</sales_quote_item_set_product>
</events>
<global>
...
</config>
Observer.php
class Mynamespace_Samples_Model_Observer
{
public function salesQuoteItemSetProduct(Varien_Event_Observer $observer)
{
/* @var $item Mage_Sales_Model_Quote_Item */
$item = $observer->getQuoteItem();
$item->setName('Ians custom product name');
return $this;
}
}