2010-11-23 1 views
1

商品をカートに自動的に追加する小さなモジュールを作成しています(特定の基準に基づいて)。しかし、その後、ユーザーがその自動製品をカートから取り除く場合は、私が知る必要があるので、現在のセッションで再度追加しないようにしてください。Magento - 商品がカートからすでに取り外されているかどうかを確認する方法

カートのオブジェクトには、すでにカートから製品が取り外されたことを伝えるものがありますか?

答えて

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()が呼び出されます)を参照して、どの商品がカート内にあるかを確認できます。

+0

鮮やかなclockworkgeekちょうど私がしていたものです。非常にありがとう。私はできるときにそれを与えるだろう!ありがとう! – sulman

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/

+0

返信ありがとうございますが、アイテムがカートからある時点で削除されたかどうかはわかりません。私が何かを逃していない限り? – sulman

関連する問題