我正在编写一个小型模块,可以自动将产品添加到购物车(基于某些标准)。但是,如果用户随后从购物车中删除了该自动产品,我需要知道,以便我不会在当前会话中再次添加它。
购物车对象是否包含任何可以告诉我产品是否已从购物车中移除的内容?
答案 0 :(得分: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>
...
应用程序/本地/ YOURMODULE /型号/ 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()
调用)以查看购物车中的产品。
答案 1 :(得分: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/