Beim programmgesteuerten Abrufen von Angebotsartikeln werden doppelte SKUs sowohl für das konfigurierbare als auch für das einfache Produkt angezeigt


10

Ich erhalte den Einkaufswagen mit:

$cart = Mage::getSingleton('checkout/session')->getQuote();

Und dann durchlaufen mit:

foreach ($cart->getAllItems() as $item) { }

Es scheint jedoch, dass doppelte Artikel mit denselben Artikelnummern, aber unterschiedlichen Produkt-IDs zurückgegeben werden! Wenn ich auf der Hauptseite den Warenkorb öffne, wird jedoch das einzelne Produkt angezeigt.

cart: {
    id: 680,
    items: [
        {
            name: "Tori Tank",
            price: "60.0000",
            id: "418",
            sku: "wbk004"
        },
        {
            name: "Tori Tank",
            price: "60.0000",
            id: "286",
            sku: "wbk004"
        }
    ]
}

Meine Frage ist .. Warum passiert das? Sollte das übergeordnete (konfigurierbare) Produkt nicht seine eigene eindeutige Sku anzeigen?

Wenn ich ein Produkt in den Warenkorb legen möchte, sollte ich das konfigurierbare Produkt hinzufügen? Oder füge ich das einfache Produkt hinzu und Magento erledigt den Rest?

Antworten:


10

Laut Magento werden beim Hinzufügen eines konfigurierbaren Produkts im Warenkorb zwei Zeilen in die Datenbank eingefügt. Ein konfigurierbarer Produktwagen ist ein einfaches Produkt

  • One row has configurable id and simple product SKU and parent item id is null
  • Other rows have simple id and simple product SKU and parent item id should above row id

Da Sie getAllItems()dann on for loop verwenden müssen, müssen Sie checkes haben parent item $item->getParentItemId().

foreach ($cart->getAllItems() as $item) {
    / * add this */
    if ($item->getParentItemId()) {
        continue;
    }
........
}

Sie können Marius-Code auch für die Sichtbarkeit des Benutzers verwenden
Amit Bera

Es gibt jedoch ein Problem. Ich kann Farbe, Größe usw. nicht ermitteln. Wenn ich getAllVisibleItems () verwende. Wie soll ich das machen
Pat

Ja, es ist möglich, wenn Sie das Produktmodell von Sku verwenden, da sku für zwei gleich ist. rowss
Amit Bera

10

Verwenden Sie $cart->getAllVisibleItems()anstelle von $cart->getAllItems().
Sie erhalten Duplikate, da Magento beim Hinzufügen eines konfigurierbaren Produkts zum Warenkorb tatsächlich zwei Produkte hinzufügt, das einfache Produkt und das konfigurierbare Produkt, von denen jedoch nur eines für den Benutzer sichtbar ist.


Wenn ich ein einfaches Produkt hinzufüge, wird automatisch auch das konfigurierbare hinzugefügt? Oder muss ich es manuell machen?
Pat

Nein. Wenn Sie ein konfigurierbares Produkt hinzufügen, befinden sich 2 im Warenkorb.
Marius

1
<?php
$cart = Mage::getModel('checkout/cart')->getQuote();

foreach ($cart->getAllVisibleItems() as $item) 
{ 
  echo $productName = $item->getProduct()->getName();
  echo $productPrice = $item->getProduct()->getPrice();
  echo $grandTotal = Mage::getModel('checkout/session')->getQuote()->getGrandTotal();
  echo $this->helper('catalog/image')->init($item->getProduct(), 'small_image')->resize(50,50);
}

?>

Fügen Sie Code in <? Php?> Für alle Zeilen hinzu
Bhagyavant
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.