代码之家  ›  专栏  ›  技术社区  ›  sulman

Magento-如何检查产品是否已从购物车中移除

  •  1
  • sulman  · 技术社区  · 14 年前

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

    2 回复  |  直到 10 年前
        1
  •  2
  •   clockworkgeek    14 年前

    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
  •  0
  •   Shakti Singh    14 年前

    是的,您可以在购物车中获取当前项目,如下所示:

    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/