10

顧客のカートに追加された単純な製品をロードしようとしていますが、アイテムを取得すると、構成可能な親が表示されます。

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

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

var_dump($productIds);

たとえば、カートに小、中、大を追加した場合、これはすべて同じ構成可能な ID を返します。個々のシンプルな製品を入手するにはどうすればよいですか? 単純な製品レベルで設定された属性値を取得しようとしています。

4

1 に答える 1

20

チェックアウト/カートページで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;
}
于 2013-08-02T23:43:11.837 に答える