2010-11-23 3 views
1

J'écris actuellement un petit module qui ajoutera automatiquement un produit au panier (selon certains critères). Toutefois, si l'utilisateur supprime ultérieurement ce produit automatique du panier, je dois savoir que je ne l'ajouterai pas à la session en cours.Magento - Comment vérifier si un produit a déjà été retiré du panier

Est-ce que l'objet panier contient quelque chose qui peut me dire si un produit a déjà été retiré du panier?

Répondre

2

Magento ne tient pas compte rendu dont les éléments ont été supprimés, vous devrez fais-le toi-même. Commencez par écouter un événement;

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/Modèle/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 
    } 
} 

?> 

Créer une classe de session qui étend Mage_Core_Model_Session_Abstract et l'utiliser pour stocker les ID de produit que vous collectez dans l'observateur ci-dessus. Vous pouvez ensuite vous référer à cet objet de session (appelé par Mage::getSingleton()) pour voir quels produits étaient dans le panier.

+0

Brillante clockworkgeek c'est exactement ce que je recherchais. Merci beaucoup pour ça. Je vais essayer quand je peux! Merci! – sulman

0

oui, vous pouvez obtenir des éléments actuels dans le panier comme ceci: -

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>"; 
} 

Ce lien peut utile http://www.magentocommerce.com/boards/viewthread/19020/

+0

Merci pour la réponse, mais cela ne me dit pas si l'article a été retiré à un moment donné du panier. À moins que je ne manque quelque chose? – sulman

Questions connexes