견적 (카트) 품목을 프로그래밍 방식으로 가져 오면 구성 가능하고 단순한 제품에 대한 중복 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에 따르면, 구성 가능한 제품이 장바구니에 추가되면 두 개의 행이 데이터베이스에 삽입됩니다. 구성 가능한 제품 카트 하나는 간단한 제품입니다.

  • 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()그때 for for 루프를 사용함에 따라 당신 check은 그것을 가지고 있어야합니다 parent item $item->getParentItemId().

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

사용자 가시성 목적으로 Marius 코드를 사용할 수도 있습니다.
Amit Bera

그래도 문제가 있습니다. 색상, 크기 등을 얻을 수 없습니다. getAllVisibleItems ()를 사용할 때. 어떻게해야합니까?
Pat

그렇습니다. Sku는 Product 모델을 사용하여 가능합니다. sku는 두 개에 대해 동일합니다 .. 행
Amit Bera

10

$cart->getAllVisibleItems()대신에 사용하십시오 $cart->getAllItems().
카트에 구성 가능한 제품을 추가 할 때 magento는 실제로 2 개의 제품, 단순 제품 및 구성 가능한 제품을 추가하지만 사용자에게는 하나만 표시되므로 중복이 발생합니다.


간단한 제품을 추가하면 구성 가능한 제품도 자동으로 추가됩니까? 아니면 수동으로해야합니까?
Pat

아니요. 구성 가능한 제품을 추가하면 장바구니에 2 개가 있습니다.
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);
}

?>

모든 줄에 대해 <? php?>에 코드 추가
Bhagyavant
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.