Ottenere articoli di preventivo (carrello) mostra programmaticamente SKU duplicati sia per il prodotto configurabile che semplice


10

Ricevo il carrello usando:

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

E poi iterando attraverso di esso usando:

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

Ma sembra restituire articoli duplicati con gli stessi SKU, ma ID prodotto diversi! Sul sito principale, quando apro il carrello, tuttavia, mostra il singolo prodotto.

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

La mia domanda è ... Perché sta succedendo questo? Il prodotto genitore (configurabile) non dovrebbe mostrare il proprio Sku unico?

Inoltre, se voglio aggiungere un prodotto al carrello, devo aggiungere il prodotto configurabile? Oppure aggiungo il prodotto semplice e Magento gestisce il resto?

Risposte:


10

Secondo Magento, quando un prodotto configurabile è stato aggiunto al carrello, nel database vengono inserite due righe. un carrello del prodotto configurabile un altro è un prodotto semplice

  • 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

Come hai usato getAllItems()poi su per il ciclo che devi fare checkè parent item $item->getParentItemId().

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

Puoi anche utilizzare il codice Marius a scopo di visibilità dell'utente
Amit Bera

C'è un problema però ... Non riesco a ottenere il colore, la dimensione, ecc. Quando uso getAllVisibleItems (). Come dovrei farlo?
Pat

sì, è possibile utilizzando il modello del prodotto di Sku, perché sku è lo stesso per due file.
Amit Bera

10

Usa $cart->getAllVisibleItems()invece di $cart->getAllItems().
Ottieni duplicati perché quando aggiungi un prodotto configurabile al carrello, magento in realtà aggiunge 2 prodotti, il prodotto semplice e il prodotto configurabile, ma solo uno è visibile per l'utente.


Se aggiungo un prodotto semplice, aggiungerà automaticamente anche quello configurabile? O devo farlo manualmente?
Pat

No. Quando aggiungi un prodotto configurabile, ce ne saranno 2 nel carrello.
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);
}

?>

Aggiungi il codice in <? Php?> Per tutte le righe
Bhagyavant,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.