Respostas:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
em $cart
você tem toda a coleção de itens do carrinho e, se você deseja obter o ID do produto, nome que pode obter usando o loop foreach
Encontrei outra solução. O código a seguir funciona para mim.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Toda vez que você pensa em usar -> load () no magento, pode contar com um desempenho ruim, às vezes não há outro opção realmente, mas este não é o caso aqui ..
Existem vários métodos que funcionam de maneira diferente:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Retorna uma coleção de itens de cotação com todos os itens associados à cotação atual.
$items = Mage::getSingleton('checkout/cart')->getItems();
Este é um atalho para o método acima, mas se não houver aspas, ele retornará uma matriz vazia; portanto, você não pode confiar em obter uma instância de coleção.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Carrega a coleção de itens e retorna uma matriz de todos os itens que não estão marcados como excluídos (ou seja, foram removidos na solicitação atual)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Carrega a coleção de itens e, em seguida, retorna uma matriz de todos os itens que não estão marcados como excluídos E não têm um pai (ou seja, você obtém itens para produtos configuráveis e em pacote configurável, mas não seus filhos associados). Cada item da matriz corresponde a uma linha exibida na página do carrinho.
Escolha o que melhor se adapta às suas necessidades. Na maioria dos casos, o último método é o que você precisa, mas infelizmente o Magento o fornece apenas como array e não como coleção.
Observe que Mage::getSingleton('checkout/cart')->getQuote()
e Mage::getSingleton('checkout/session')->getQuote()
são intercambiáveis.
$items =Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
foreach($items as $item) {
echo 'ID: '.$item->getProductId().'<br />';
echo 'Name: '.$item->getName().'<br />';
echo 'Sku: '.$item->getSku().'<br />';
echo 'Quantity: '.$item->getQty().'<br />';
echo 'Price: '.$item->getPrice().'<br />';
echo "<br />";
}
melhor maneira de obter o item completo no carrinho
O código abaixo é usado para obter itens do carrinho
$cart = new Mage_Checkout_Model_Cart();
$cart->init();
foreach ($cart->getItems() as $item) {
// we can wrap our request in this IF statement
if (!$item->getParentItemId()) {
}
}