1

我正在编写一个小模块,它将自动将产品添加到购物车(基于某些标准)。但是,如果用户随后从购物车中删除了该自动产品,我需要知道这样我就不会在当前会话中再次添加它。

购物车对象是否包含任何可以告诉我产品是否已从购物车中删除的信息?

4

2 回答 2

2

Magento 不会记录哪些项目已被删除,您必须自己做。从监听事件开始;

应用程序/本地/YOURMODULE/etc/config.xml

<config>
...
    <frontend>
        <events>
            <sales_quote_remove_item>
                <observers>
                    <class>YOURMODULE/observer</class>
                    <method>removeQuoteItem</method>
                </observers>
            </sales_quote_remove_item>
        </events>
    </frontend>
...

app/local/YOURMODULE/Model/Observer.php

<?php

class YOU_YOURMODULE_Model_Observer
{
    public function removeQuoteItem(Varien_Event_Observer $observer)
    {
        $product = $observer->getQuoteItem()->getProduct();
        // Store `$product->getId()` in a session variable
    }
}

?>

创建一个会话类,扩展Mage_Core_Model_Session_Abstract并使用它来存储您在上述观察者中收集的产品 ID。然后,您可以参考该会话对象(由 调用Mage::getSingleton())来查看购物车中曾经有哪些产品。

于 2010-11-24T16:06:33.967 回答
0

是的,您可以像这样在购物车中获取当前商品:-

foreach ($session->getQuote()->getAllItems() as $item) {

    $output .= $item->getSku() . "<br>";
    $output .= $item->getName() . "<br>";
    $output .= $item->getDescription() . "<br>";
    $output .= $item->getQty() . "<br>";
    $output .= $item->getBaseCalculationPrice() . "<br>";
    $output .= "<br>";
}

此链接可能会有所帮助 http://www.magentocommerce.com/boards/viewthread/19020/

于 2010-11-23T10:42:18.273 回答