Odpowiedzi:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
w $cart
masz wszystko kolekcję koszyka pozycji i jeśli chcesz uzyskać identyfikator produktu, wymienić można uzyskać z użyciem pętli foreach
Znalazłem inne rozwiązanie. Poniższy kod działa dla mnie.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Za każdym razem, gdy myślisz o użyciu -> load () w magento, możesz liczyć na niską wydajność, czasami nie ma innych opcja naprawdę, ale tutaj tak nie jest ..
Istnieje kilka metod, które działają w inny sposób:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Zwraca kolekcję pozycji wyceny ze wszystkimi pozycjami powiązanymi z bieżącą wyceną.
$items = Mage::getSingleton('checkout/cart')->getItems();
Jest to skrót do powyższej metody, ale jeśli nie ma cudzysłowu, zwraca pustą tablicę, więc nie można polegać na uzyskaniu instancji kolekcji.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Ładuje kolekcję elementów, a następnie zwraca tablicę wszystkich elementów, które nie są oznaczone jako usunięte (tj. Zostały usunięte w bieżącym żądaniu)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Wczytuje kolekcję elementów, a następnie zwraca tablicę wszystkich elementów, które nie są oznaczone jako usunięte ORAZ nie mają elementu nadrzędnego (tzn. Otrzymujesz elementy dla produktów w pakiecie i konfigurowalnych, ale nie powiązane z nimi elementy podrzędne). Każdy element tablicy odpowiada wyświetlanemu wierszowi na stronie koszyka.
Wybierz to, co najlepiej odpowiada Twoim potrzebom. W większości przypadków potrzebna jest ostatnia metoda, ale niestety Magento zapewnia ją tylko jako tablicę, a nie jako kolekcję.
Zauważ, że Mage::getSingleton('checkout/cart')->getQuote()
i Mage::getSingleton('checkout/session')->getQuote()
są wymienne.
$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 />";
}
najlepszy sposób, aby dostać wszystkie produkty do koszyka
Poniższy kod służy do pobierania przedmiotów z koszyka
$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()) {
}
}