【问题标题】:Magento - How to check if a product has already been removed from the cartMagento - 如何检查产品是否已从购物车中删除
【发布时间】:2010-11-23 10:30:57
【问题描述】:

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

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

【问题讨论】:

    标签: magento cart


    【解决方案1】:

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

    app/local/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() 调用)以查看购物车中曾经有哪些产品。

    【讨论】:

    • 出色的发条极客,这正是我所追求的。非常感谢。有空我就试试!谢谢!
    【解决方案2】:

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

    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/

    【讨论】:

    • 感谢您的回复,但这并不能告诉我该商品是否已在某个时间点从购物车中删除。除非我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 2021-09-24
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多