2012-07-26 6 views

答えて

15

答えは、親/子タイプの製品(必要な場合)に対処する方法によって大きく異なります。

あなただけのシンプルな製品でのみ扱っているか、親/子タイプの製品があり、その後、子供のidのためにテストする必要がある場合:

$productId = 1; 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 
if (! $quote->hasProductId($productId)) { 
    // Product is not in the shopping cart so 
    // go head and show the popup. 
} 

また、あなたが親/子タイプの製品を扱っている場合そしてあなただけの、親IDをテストしたい:質問だった

$productId = 1; 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 

$foundInCart = false; 
foreach($quote->getAllVisibleItems() as $item) { 
    if ($item->getData('product_id') == $productId) { 
     $foundInCart = true; 
     break; 
    } 
} 

EDIT

コメントで、なぜcontroller_action_predispatch_checkout_cart_addのレジストリ値を設定してもcart.phtmlで取得できないと尋ねられました。

基本的にレジストリ値は、checkout/cart/addに投稿してからcheckout/cart/indexにリダイレクトされるため、レジストリ値が失われます。

あなたはこれらの間で値を保持したいなら、あなたは代わりにセッションを使用することができます:あなたのオブザーバーで

を:

Mage::getSingleton('core/session')->setData('your_var', 'your_value'); 

$yourVar = Mage::getSingleton('core/session')->getData('your_var', true); 
を取得するには

getDataにtrueフラグを渡すと、sessから値が削除されますあなたのためのイオン。

+0

カートに追加する前に製品IDを取得するために "controller_action_predispatch_checkout_cart_add"を使用しました。phtmlページの商品IDを取得するためにレジスタ変数を使用しました...そしてあなたが言及しているように、しかし、私はカートのページでproductidを取得することができません。レジストリでこのことを助けてください。 – Tamanna

+0

あなたのためにこれを説明する答えが更新されました –

+0

ドリューハンター..ありがとうございました。ご協力いただきありがとうございます...:):) – Tamanna

0

製品がカートに既に存在するかどう、あなたは、単に次のコードを使用することができます。

$productId = $_product->getId(); //or however you want to get product id 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$items = $quote->getAllVisibleItems(); 
$isProductInCart = false; 
foreach($items as $_item) { 
    if($_item->getProductId() == $productId){ 
     $isProductInCart = true; 
     break; 
    } 
} 
var_dump($isProductInCart); 

・ホープ、このことができます!

+1

私はこの値をショッピングカートのページに表示したいので、オブザーバーでこのロジックを使用しました。 1つのphtmlファイル内の変数値... – Tamanna

+0

関数の引数として、関数内で上記のコードを単純に末尾に書くことができ、どこからでも呼び出すことができます。 – MagePsycho

+0

私の答えはまた下降しました –

関連する問題