Відповіді:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
у $cart
вас є вся колекція предметів кошика, і якщо ви хочете отримати ідентифікатор товару, назву ви можете отримати, використовуючи цикл foreach
Я знайшов інше рішення. Наступний код працює для мене.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Кожен раз, коли ви думаєте про використання -> load () в магенто, ви можете розраховувати на погану ефективність, іноді немає інших Варіант дійсно, але це не так.
Існує кілька методів, які працюють по-різному:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Повертає колекцію елементів цитат із усіма елементами, пов'язаними з поточною цитатою.
$items = Mage::getSingleton('checkout/cart')->getItems();
Це ярлик для описаного вище методу, але якщо немає цитати, він повертає порожній масив, тому ви не можете розраховувати на отримання екземпляра колекції.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Завантажує колекцію елементів, потім повертає масив усіх елементів, які не позначені як видалені (тобто були видалені в поточному запиті)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Завантажує колекцію елементів, потім повертає масив усіх елементів, які не позначені як видалені І не мають батьківського (тобто ви отримуєте елементи для пакетних та настроюваних продуктів, але не пов'язаних з ними дітей). Кожен елемент масиву відповідає відображеному рядку на сторінці кошика.
Виберіть те, що найкраще відповідає вашим потребам. У більшості випадків останній метод - це те, що вам потрібно, але, на жаль, Magento надає його лише як масив, а не як збір.
Зверніть увагу , що Mage::getSingleton('checkout/cart')->getQuote()
і Mage::getSingleton('checkout/session')->getQuote()
є взаємозамінними.
$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 />";
}
найкращий спосіб отримати весь товар у кошику
Нижче код використовується для отримання предметів кошика
$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()) {
}
}