【问题标题】:MAGENTO - Load last created Product to CartMAGENTO - 将最后创建的产品加载到购物车
【发布时间】:2013-08-11 09:54:58
【问题描述】:

是否可以在我的购物车中加载最后注册(创建)的产品? 怎么样?

我知道这听起来很疯狂,但我的一个项目需要这个。

我认为这是加载产品的部分:

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;
}

这个(如果我是对的)我需要替换为商店中最后一个创建的产品 - 听起来很奇怪,但我需要这个....

【问题讨论】:

    标签: magento cart


    【解决方案1】:

    你快到了 - 试试这个代码:

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

    请注意,当您获得最新报价项目时,您实际上并没有获得产品。要获得实际产品,您需要添加以下行:

    $product = $latestItem->getProduct();
    

    【讨论】:

    • 致命错误:调用未定义的方法 Mage::getSingelton() :-/ 我错过了什么吗?对不起,但我很新……但我认为你没有明白我的意思:如果用户将产品添加到购物车 - 我需要在购物车中显示最后一个 IN SHOP 创建的产品,其中插入了所选的产品 -我知道这对你没有意义,但我需要这个来进行一些计算。
    【解决方案2】:

    您可以像这样获取购物车中的商品:

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

    然后循环遍历这些项目,看看哪一个的 id 最大。

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

    【讨论】:

    • 感谢您的回答 - 但这并不完全是我试图做的 - 我将我在 Top 上的文字更改为更具体。如果用户将产品添加到购物车 - 我需要在购物车中显示最后一个在购物车中创建的产品 - 我知道这对你没有意义,但我需要这个进行一些计算。
    猜你喜欢
    • 2016-12-19
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2017-05-18
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多