Mendapatkan item kutipan (troli) secara programatik menunjukkan SKU duplikat untuk produk yang dapat dikonfigurasi dan sederhana


10

Saya mendapatkan keranjang belanja menggunakan:

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

Dan kemudian iterasi melalui itu menggunakan:

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

Tetapi tampaknya mengembalikan item duplikat dengan SKU yang sama, tetapi id produk berbeda! Di situs utama, ketika saya membuka gerobak, itu menunjukkan produk tunggal.

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

Pertanyaan saya adalah .. Mengapa ini terjadi? Tidakkah produk induk (dapat dikonfigurasi) menampilkan Sku uniknya sendiri?

Juga, jika saya ingin menambahkan produk ke troli, haruskah saya menambahkan produk yang dapat dikonfigurasi? Atau apakah saya menambahkan produk sederhana dan Magento menangani sisanya?

Jawaban:


10

Menurut Magento, ketika produk yang dapat dikonfigurasi ditambahkan pada troli maka dua baris dimasukkan ke dalam basis data. satu keranjang produk yang dapat dikonfigurasi yang lain adalah produk sederhana

  • 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

Seperti yang telah Anda gunakan getAllItems()maka untuk loop Anda harus checkmemilikinya parent item $item->getParentItemId().

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

Anda juga dapat menggunakan kode Marius untuk tujuan visibilitas pengguna
Amit Bera

Namun ada masalah .. Saya tidak bisa mendapatkan warna, ukuran, dll. Ketika saya menggunakan getAllVisibleItems (). Bagaimana saya harus melakukan itu?
Pat

ya itu mungkin dengan menggunakan model Produk oleh Sku, karena sku sama untuk dua .. baris
Amit Bera

10

Gunakan $cart->getAllVisibleItems()sebagai ganti $cart->getAllItems().
Anda mendapatkan duplikat karena ketika menambahkan produk yang dapat dikonfigurasi ke troli, magento sebenarnya menambahkan 2 produk, produk sederhana dan produk yang dapat dikonfigurasi tetapi hanya satu yang terlihat oleh pengguna.


Jika saya menambahkan produk sederhana, itu juga akan secara otomatis menambahkan yang dapat dikonfigurasi? Atau apakah saya perlu melakukannya secara manual?
Pat

Tidak. Ketika Anda menambahkan produk yang dapat dikonfigurasi, akan ada 2 di keranjang.
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);
}

?>

Tambahkan kode dalam <? Php?> Untuk semua baris
Bhagyavant
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.