質問

カートに単純な製品の数量を取得しようとしていますが、設定可能な数量だけを返します。

カートで商品簡単な数量を取得できますか?

これを使っています:

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

foreach ($cart->getItemsCollection() as $item) {
        if($item->getProduct()->getData('type_id') == 'simple'){
            $theqty = $this->escapeHtml($item->getQty());
        }
    }
.

役に立ちましたか?

解決

ここでは、必要なものをする必要があります。製品オブジェクトにアクセスする必要はありません。

$quote = Mage::helper('checkout/cart')->getCart()->getQuote();
$valor = [];

foreach ($quote->getAllItems() as $item) {
        if ('simple' != $item->getProductType()) continue;
        $valor[]= array (
                'id' => $item->getSku(),
                'quantity' => $item->getQty(),
                'price' => $item->getParentItemId() ? $item->getParentItem()->getPrice() : $item->getPrice()
        );
}

$valor_json = json_encode($valor);
.

他のヒント

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

foreach ($cart->getAllItems() as $item) {
        $sku = $item->getProduct()->getSku();
        $preco = $item->getProduct()->getPrice();
        $theqty = $this->escapeHtml($item->getQty());
        if($item->getProduct()->getData('type_id') == 'configurable'){
            $sku = Mage::getModel('catalog/product')->load($item->getProductId());
            $valor .= '{ id: "'.$sku->getSku().'", price:'.$preco.', quantity: '.$theqty .'},';
            $sku = $item->getProduct()->getSku();
        }elseif($item->getProduct()->getData('type_id') == 'simple'){
            if (!(in_array($sku, $ids))) {
                $valor .= '{ id: "'.$sku.'", price:'.$preco.', quantity: '.$theqty .'},';
            }
        }
        array_push($ids, $sku);
    }
.

You can get product quantity without looping all items:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$product = Mage::getModel('catalog/product')->load($product_id);
$_item = $quote->getItemByProduct($product);
$qty = $_item->getQty();

use $cart->getAllItems() to get the simple items too.

You can get product quantity without looping all items:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$_item = $quote->getItemByProduct($product);
$qty = $_item->getQty();
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top