以编程方式获取报价(购物车)项目会显示可配置产品和简单产品的重复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处理其余产品?

Answers:


10

根据Magento的说法,当在购物车中添加了可配置产品时,则会在数据库中插入两行。一个可配置的产品购物车,另一个是简单的产品

  • 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()then for循环时,您需要check拥有它parent item $item->getParentItemId()

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

您也可以将Marius代码用于用户可见性
Amit Bera

但是有一个问题。我无法获得颜色,大小等。当我使用getAllVisibleItems()时。我该怎么办?
专利

是的,可以使用Sku的产品模型,因为两个SKU是相同的..行
Amit Bera

10

使用$cart->getAllVisibleItems()代替$cart->getAllItems()
您会得到重复的信息,因为在将可配置产品添加到购物车时,magento实际上会添加2个产品,即简单产品和可配置产品,但用户只能看到一个。


如果我添加一种简单的产品,它还会自动添加可配置的产品吗?还是我需要手动进行?
专利

否。添加可配置产品时,购物车中将有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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.