プログラムで見積もり(カート)アイテムを取得すると、構成可能な製品とシンプルな製品の両方のSKUが重複して表示される


10

私はショッピングカートを使っています:

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

そしてそれを使ってそれを繰り返します:

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

しかし、同じSKUを持つが、製品IDが異なる重複アイテムを返すようです。しかし、メインサイトでカートを開くと、単一の商品が表示されています。

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

私の質問は..なぜこれが起こっているのですか?親(構成可能)製品は、独自のSkuを表示すべきではありませんか?

また、カートに商品を追加する場合、構成可能な商品を追加する必要がありますか?または、単純な製品を追加し、Magentoが残りを処理しますか?

回答:


10

Magentoによると、構成可能な製品がカートに追加されると、データベースに2つの行が挿入されます。1つの構成可能な製品カートは別の単純な製品です

  • 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

あなたがgetAllItems()それからon forループを使用しているので、あなたcheckはそれが持っている必要がありますparent item $item->getParentItemId()

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

また、マリウスコードをユーザーの表示目的に使用することもできます
Amit Bera

しかし、問題があります。色、サイズなどを取得できません。getAllVisibleItems()を使用すると、どうすればよいですか?
2015年

はい、それSKUが2に同じであるので.. SKUによって製品のモデルを使用して、可能rowss
アミットベラ

10

$cart->getAllVisibleItems()代わりに使用します$cart->getAllItems()
カートに構成可能な製品を追加すると、magentoは実際には単純な製品と構成可能な製品の2つの製品を追加しますが、ユーザーには1つしか表示されないため、重複が発生します。


単純な製品を追加すると、構成可能な製品も自動的に追加されますか?それとも手動で行う必要がありますか?
Pat

いいえ。構成可能な製品を追加すると、カートに2つあります。
マリウス

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);
}

?>

すべての行のコードを<?php?>に追加
Bhagyavant
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.