2013-08-02 11 views
8

Sto provando a caricare i prodotti semplici che sono stati aggiunti al carrello di un cliente, ma quando recupero gli articoli, mostra il genitore configurabile.Ottieni il prodotto semplice da configurabile nel carrello

$cart = Mage::getSingleton('checkout/cart'); 
$productIds = array(); 

foreach ($cart->getQuote()->getAllVisibleItems() as $item) { 
    $productIds[] = $item->getProduct()->getId(); 
} 

var_dump($productIds); 

Per esempio, questo restituirà tutti lo stesso ID configurabile quando ho aggiunto una piccola, media e grande al mio carrello. Come posso ottenere i singoli prodotti semplici? Sto cercando di recuperare un valore di attributo impostato a livello di prodotto semplice.

risposta

16

Dopo aver dato un'occhiata a come Magento rende i articoli nel carrello sulla pagina di checkout/cart, sono stato in grado di trovare questo in app/code/core/Mage/Checkout/Block/Cart/Item/Renderer/Configurable.php

/** 
* Get item configurable child product 
* 
* @return Mage_Catalog_Model_Product 
*/ 
public function getChildProduct() 
{ 
    if ($option = $this->getItem()->getOptionByCode('simple_product')) { 
     return $option->getProduct(); 
    } 
    return $this->getProduct(); 
} 

Quindi, applicandolo al frammento in questione, sarebbe

foreach ($cart->getQuote()->getAllVisibleItems() as $item) { 
    $productId = $item->getProduct()->getId(); 
    if ($option = $item->getOptionByCode('simple_product')) { 
     $productId = $option->getProduct()->getId(); 
    } 
    $productIds[] = $productId; 
} 
+11

Per gli altri: un codice di una riga: $ _item-> getOptionByCode ('simple_product') -> EsprProdotto() -> getId(); –

Problemi correlati