2013-08-02 16 views
8

Ich versuche, die einfachen Produkte zu laden, die zum Warenkorb eines Kunden hinzugefügt wurden, aber wenn ich die Artikel abrufe, wird der konfigurierbare Elternteil angezeigt.Einfaches Produkt von Configurable im Einkaufswagen abrufen

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

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

var_dump($productIds); 

Zum Beispiel wird dies alle die gleiche konfigurierbare ID zurück, wenn ich einen kleinen, mittleren hinzugefügt haben, und groß zu meinem Wagen. Wie kann ich die einzelnen einfachen Produkte bekommen? Ich versuche, einen Attributwert abzurufen, der auf der einfachen Produktebene festgelegt ist.

Antwort

16

Nach der Einnahme einen Blick darauf, wie Magento die Artikel in Ihrem Warenkorb rendert auf der Kasse/Warenkorb-Seite, konnte ich diese 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(); 
} 

in So finden, um es in die Schnipsel in der Frage der Anwendung, es würde

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

Für andere sein: A eine Zeile Code: $ _item-> getOptionByCode ('simple_product') -> getProduct() -> getId(); –

Verwandte Themen