magento cart产品不会叠加

时间:2014-02-18 14:54:39

标签: php magento cart product

我在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。

有人可以帮我解决这个问题吗?

1 个答案:

答案 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();
}

我没试过。我们告诉我这是否有用。