(特定の基準に基づいて)カートに製品を自動的に追加する小さなモジュールを作成しています。ただし、その後ユーザーがその自動商品をカートから削除した場合は、現在のセッションで再度追加しないように知っておく必要があります。
カートオブジェクトには、商品がカートからすでに削除されているかどうかを知ることができるものがありますか?
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()
)を参照して、カートにあった製品を確認できます。
はい、次のようにカートに現在のアイテムを入れることができます:-
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/