Fiyat teklifi (alışveriş sepeti) öğeleri, programlanabilir ve basit ürün için programlı yinelenen SKU'ları gösterir


10

Alışveriş sepetini kullanarak alıyorum:

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

Ve sonra bunu kullanarak yineleme:

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

Ancak aynı SKU'larla, ancak farklı ürün kimlikleriyle yinelenen öğeler döndürüyor gibi görünüyor! Ana sitede, sepeti açtığımda, tek bir ürünü gösteriyor.

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

Benim sorum .. Bu neden oluyor? Ana (yapılandırılabilir) ürün kendi benzersiz Sku'unu göstermemeli mi?

Ayrıca, sepete bir ürün eklemek istersem, yapılandırılabilir ürünü eklemem gerekir mi? Yoksa basit ürünü ekler miyim ve Magento gerisini halleder mi?

Yanıtlar:


10

Magento'ya göre, yapılandırılabilir bir ürün sepete eklendiğinde veritabanına iki sıra eklenir. bir yapılandırılabilir ürün sepeti diğeri basit bir üründür

  • 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

Kullandığınız gibi getAllItems()döngü üzerinde o zaman gerek checksahip olduğu olduğunu parent item $item->getParentItemId().

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

Ayrıca kullanıcı görünürlüğü için de Marius kodu kullanabilirsiniz
Amit Bera

Ama bir sorun var .. Ben renk, boyut, vb alınamıyor .. Ben getAllVisibleItems () kullandığınızda. Bunu nasıl yapmalıyım?
Pat

Evet, Sku'nun Ürün modelini kullanarak mümkündür, çünkü sku iki kişiliktir. rowss
Amit Bera

10

Yerine $cart->getAllVisibleItems()kullanın $cart->getAllItems().
Yinelenenleri alırsınız çünkü sepete yapılandırılabilir bir ürün eklerken, magento aslında 2 ürün, basit ürün ve yapılandırılabilir ürün ekler, ancak kullanıcı için sadece bir tane görünür.


Basit bir ürün eklersem, yapılandırılabilir olanı da otomatik olarak ekler mi? Yoksa elle mi yapmam gerekiyor?
Pat

Hayır. Yapılandırılabilir bir ürün eklediğinizde, alışveriş sepetinde 2 adet bulunur.
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);
}

?>

Tüm satırlar için <? Php?>
Kodunu ekleyin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.