2013-08-02 5 views
8

Я пытаюсь загрузить простые продукты, которые были добавлены в корзину покупателя, но когда я извлекаю элементы, он показывает родительскую конфигурацию.Получить простой продукт из настраиваемого в корзине

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

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

var_dump($productIds); 

Например, это вернет все тот же конфигурируемый идентификатор, когда я добавлю небольшую, среднюю и большую в корзину. Как я могу получить отдельные простые продукты? Я пытаюсь получить значение атрибута, установленное на простом уровне продукта.

ответ

16

После взглянуть на то, как Magento отображает элементы в вашей корзине на фотографии/странице корзины, я был в состоянии найти это в 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(); 
} 

Таким образом, применяя его к сниппета в вопросе, было бы

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

Для других: код одна строка: $ _item-> getOptionByCode ('simple_product') -> getProduct() -> GetId(); –

Смежные вопросы