Nhận báo giá (giỏ hàng) lập trình hiển thị SKU trùng lặp cho cả sản phẩm đơn giản và có thể định cấu hình


10

Tôi đang nhận giỏ hàng bằng cách sử dụng:

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

Và sau đó lặp lại thông qua nó bằng cách sử dụng:

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

Nhưng nó dường như đang trả lại các mục trùng lặp với cùng SKU, nhưng id sản phẩm khác nhau! Trên trang web chính, khi tôi mở giỏ hàng, tuy nhiên, nó hiển thị sản phẩm duy nhất.

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

Câu hỏi của tôi là .. Tại sao điều này xảy ra? Không phải sản phẩm gốc (có thể định cấu hình) sẽ hiển thị Sku độc đáo của riêng mình?

Ngoài ra, nếu tôi muốn thêm một sản phẩm vào giỏ hàng, tôi có nên thêm sản phẩm có thể định cấu hình không? Hay tôi thêm sản phẩm đơn giản và Magento xử lý phần còn lại?

Câu trả lời:


10

Theo Magento, khi một sản phẩm có thể cấu hình được thêm vào giỏ hàng thì hai hàng được chèn vào cơ sở dữ liệu. một giỏ sản phẩm cấu hình khác là một sản phẩm đơn giản

  • 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

Như bạn đã sử dụng getAllItems() thì vòng lặp on bạn cần checklà nó có parent item $item->getParentItemId().

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

Bạn cũng có thể sử dụng mã Marius cho mục đích hiển thị của người dùng
Amit Bera

Có một vấn đề mặc dù .. Tôi không thể có được màu sắc, kích thước, v.v. Khi tôi sử dụng getAllVisibleItems (). Tôi nên làm thế nào?
Pat

có, có thể bằng cách sử dụng Mô hình sản phẩm của Sku, vì sku giống nhau cho hai .. hàng
Amit Bera

10

Sử dụng $cart->getAllVisibleItems()thay vì $cart->getAllItems().
Bạn nhận được các bản sao vì khi thêm một sản phẩm có thể định cấu hình vào giỏ hàng, magento thực sự thêm 2 sản phẩm, sản phẩm đơn giản và sản phẩm có thể định cấu hình nhưng chỉ có một sản phẩm hiển thị cho người dùng.


Nếu tôi thêm một sản phẩm đơn giản, nó cũng sẽ tự động thêm một sản phẩm có thể cấu hình? Hay tôi cần phải làm bằng tay?
Pat

Không. Khi bạn thêm một sản phẩm có thể định cấu hình, sẽ có 2 trong giỏ hàng ,.
Marius

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

?>

Thêm mã trong <? Php?> Cho tất cả các dòng
Bhagyavant
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.