11
votes

Magento: Obtenez la quantité dans le panier pour un produit donné

J'utilise ce code: xxx

pour obtenir des informations sur les produits dans le panier.

Comment puis-je obtenir seulement la quantité pour un produit donné (Producteur)

merci beaucoup.


0 commentaires

4 Réponses :


0
votes

Vous pouvez essayer:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$item = Mage::getModel('sales/quote_item')->getCollection()
                ->addFieldToFilter('quote_id', $quote->getId())
                ->addFieldToFilter('product_id', $productId)
                ->getFirstItem();
//to get the quantity: $item->getQty();


2 commentaires

I Obtenir cette erreur: Erreur fatale: appelez à une fonction de membre GetStoreID () sur un objet in / app / de code / CODE / MART / SALLE / MODEL / MYSQL4 / Devis / Article / Collection .php On Line 67


Vous allez courir dans des problèmes, car la citation s'attend à ce que l'objet de magasin soit chargé. Si vous exécutez ce code "extérieur" de mage :: exécuté (), utilisez mage :: getingleton ("noyau / session", tableau ("nom '=>' frontend '));



40
votes

TL; DR: la réponse à cette question varie en complexité basée sur le type de produit (configurable, simple, etc.). Ceci peut conduire à la configuration de votre catalogue et de définir un produit simple visibilité. Si tout ce que vous avez dans votre catalogue est des articles simples, cette tâche est très facile. Aussi: voir Modifier à la fin.

Il y a beaucoup de scénarios à considérer. Par exemple, si vous ajoutez un élément configurable au panier, la citation aura deux éléments de devis par option: un élément de devis pour le produit parent configurable qui contiendra des informations de quantité d'option et un élément de devis qui fournira les données simples de l'option. Les articles de paquet auront un élément de paquet parent ainsi qu'un élément simple pour chaque option de paquet.

Qu'est-ce que vous devez décider de décider de la quantité de type de chaque produit à l'utilisateur; Par exemple, voulez-vous représenter le même modèle de chemise qu'un élément de ligne avec toutes les quantités de taille ou vous les séparer pour chaque taille (ces derniers étant de la manière dont Magento les rend dans les zones de panier / d'examen).

Je vous recommande d'ajouter vos produits au panier, puis de l'utiliser dans le frontend pour voir les données d'élément de devis: xxx

Je recommande d'utiliser une installation avec l'échantillon données et ajout de différentes quantités de chaque type de produit au panier. Sur la base de cette version + la sortie du code ci-dessus, vous verrez que vous avez plusieurs approches et gotchas lorsque vous bouclez. Les scénarios de confusion sont lorsque vous avez les suivants:

  • articles configurables
    • Pour chaque option, vous aurez le produit configurable comme élément et le produit simple à partir de laquelle l'option est dérivée comme un élément. Si vous souhaitez afficher le nombre total de compteurs par le parent configurable, vous devez compter sur la quantité totale configurable dans la boucle:

      code: xxx

      • articles groupés
        • Les produits simples qui sont ajoutés à la citation dans le cadre d'un élément groupé sont distincts des éléments simples qui sont ajoutés individuellement et d'autres groupes auxquels ils peuvent appartenir. Si vous voulez regrouper ceux-ci, vous pouvez faire une boucle de même:

          code: xxx

          • articles de paquet
            • Les éléments de devis du produit sont représentés par un élément pour le produit d'ensemble et séparent des éléments de produits simples pour chaque option. Les éléments de produit simples ont les informations de quantité stockées contre eux. Les éléments simples ont un identifiant d'élément parent qui se réfège à l'élément de citation du produit BUNDLE, tout comme des éléments d'enfants de devis de produit configurables.

              Vous pouvez voir que la manipulation de tous les scénarios est encombrant. J'aimerais pouvoir vous dire qu'il est plus facile de le faire via des modèles de ressources, mais le fait est que, dans la base de données, le sale_flat_quote_item_option table enregistre les informations quantitatives dans une colonne de données sérialisées, vous devez donc avoir besoin de Tirez les choses en PHP pour obtenir n'importe où avec eux (ce qui est fait pour vous via le modèle de ressource).

              Désolé, c'est une réponse aussi longue, mais vous pouvez le voir, en fonction de votre configuration de catalogue, redevez à une attention particulière et à des tests pour vous assurer que vous avez vos bases couvertes.

              EDIT: En essayant d'être approfondi, je n'ai pas mentionné que vous Devrait-on examiner la table sale_flat_quote_item . En fonction de vos exigences, vous pouvez facilement utiliser les données de là pour modéliser rapidement, gracieusement et efficacement les données dont vous avez besoin pour atteindre vos besoins d'affichage.


0 commentaires

0
votes

Vous devez utiliser la méthode xxx

lorsque vous appelez la collection. Devrait ressembler à ceci xxx


0 commentaires

3
votes

Essayez ceci:

// if you don't have the product object already...
$_product = Mage::getModel('catalog/product')->load($productid);

$_quote = Mage::getSingleton('checkout/session')->getQuote();
$_item = $_quote ? $_quote->getItemByProduct($_product) : false;
$qty = $_item ? $_item->getQty() : 0;


0 commentaires