Risposte:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
in $cart
hai tutta la collezione di articoli del carrello e se vuoi ottenere l'ID del prodotto, il nome che puoi ottenere usando foreach loop
Ho trovato un'altra soluzione. Il seguente codice funziona per me.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Ogni volta che pensi di usare -> load () in magento puoi contare su cattive prestazioni, a volte non ce ne sono altre opzione davvero ma questo non è il caso qui ..
Esistono diversi metodi che funzionano in modo diverso:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Restituisce una raccolta di articoli di preventivo con tutti gli articoli associati al preventivo corrente.
$items = Mage::getSingleton('checkout/cart')->getItems();
Questa è una scorciatoia per il metodo sopra, ma se non è presente alcuna citazione restituisce un array vuoto, quindi non puoi fare affidamento su come ottenere un'istanza di raccolta.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Carica la raccolta di articoli, quindi restituisce un array di tutti gli elementi che non sono contrassegnati come eliminati (ovvero sono stati rimossi nella richiesta corrente)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Carica la raccolta di articoli, quindi restituisce un array di tutti gli articoli che non sono contrassegnati come eliminati E non hanno un genitore (ovvero si ottengono articoli per prodotti in bundle e configurabili ma non i loro figli associati). Ogni articolo dell'array corrisponde a una riga visualizzata nella pagina del carrello.
Scegli ciò che si adatta meglio alle tue esigenze. Nella maggior parte dei casi l'ultimo metodo è quello di cui hai bisogno, ma sfortunatamente Magento lo fornisce solo come array e non come collezione.
Si noti che Mage::getSingleton('checkout/cart')->getQuote()
e Mage::getSingleton('checkout/session')->getQuote()
sono intercambiabili.
$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 />";
}
modo migliore per ottenere tutto l'articolo nel carrello
Il codice seguente viene utilizzato per ottenere gli articoli del carrello
$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()) {
}
}