MAGENTO - Load last created Product to Cart

2019-08-28 20:30发布

问题:

is it possible to load the last registered (created) Product in my Cart? How?

I know it sounds crazy but i need this for one of my project.

I think this is the part where the Product gets loaded:

cartcontroller.php

/**
 * Initialize product instance from request data
 *
 * @return Mage_Catalog_Model_Product || false
 */
protected function _initProduct()
{
    $productId = (int) $this->getRequest()->getParam('product');
    if ($productId) {
        $product = Mage::getSingelton('checkout/session')->getQuote()->getAllItems()
            ->setStoreId(Mage::app()->getStore()->getId())
            ->load($productId);
        if ($product->getId()) {
            return $product;
        }
    }
    return false;
}

This (if I´m right) i need to be replaced with the last in shop created Product - sound weired but i need this....

回答1:

You're almost there - try this code:

$collection = Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection();
$collection->getSelect()->order('created_at DESC');
$latestItem = $collection->getLastItem();

Note that when you get the latest quote item, you're not actually obtaining the product. To get the actual product, you would need to add this line:

$product = $latestItem->getProduct();


回答2:

You can get the items in the cart like this:

$items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();

Then loop through the items and see which one has the biggest id.

$max = 0;
$lastItem = null;
foreach ($items as $item){
    if ($item->getId() > $max) {
        $max = $item->getId();
        $lastItem = $item;
    }
}
if ($lastItem){
    //do something with $lastItem
}


标签: magento cart