我在checkout_cart_product_add_after
上添加了一个包含此代码的观察者:
public function addToCart(Varien_Event_Observer $observer) {
$cart = Mage::getModel('checkout/cart'); //Mage_Checkout_Model_Cart
$item = $observer->getQuoteItem(); // Mage_Sales_Model_Quote_Item
$quote = $item->getQuote(); // Mage_Sales_Model_Quote
$product = $item->getProduct(); // Mage_Catalog_Model_Product
$cart->init();
$item = $item->getParentItem() ? $item->getParentItem() : $observer->getQuoteItem();
$_product = $product->getTypeId() == "configurable" ? $item->getOptionByCode('simple_product')->getProduct() : $product;
$_product->setIsSuperMode(true);
$item->setProduct($_product);
$item->setQty(1);
$item->save();
$quote->setTotalsCollectedFlag(false);
$quote->collectTotals();
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
return $this;
}
它总是将简单的产品添加到购物车,而不是可配置的。 它是有效的,除了一件事,它们不会堆叠在一起。
例如:ProductID = 26 当我添加ID为26的十三种产品时,我不希望它们全部分开,而只是数量为13。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
在cart-> init()之后:
$productId = $observer->getProduct()->getId();
$quote = Mage::getSingleton('checkout/session')->getQuote();
if (! $quote->hasProductId($productId)) {
//normal add
}else{
$item = $quote->getItemByProduct($observer->getProduct());
$itemQty = $item->getQty();
$item->setQty($itemQty+1);
$item->save();
}
我没试过。我们告诉我这是否有用。