0

最後に登録 (作成) された商品をカートに入れることはできますか? どのように?

私はそれがクレイジーに聞こえることを知っていますが、私のプロジェクトの1つにこれが必要です.

これは、製品が読み込まれる部分だと思います。

カートコントローラー.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;
}

これは (私が正しければ) ショップで作成された最後の製品と交換する必要があります - 音はおかしくなりますが、これが必要です....

4

2 に答える 2

1

もう少しです - 次のコードを試してください:

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

最新の見積もりアイテムを取得しても、実際には製品を取得していないことに注意してください。実際の製品を取得するには、次の行を追加する必要があります。

$product = $latestItem->getProduct();
于 2013-08-11T14:26:09.017 に答える
1

次のようにカート内のアイテムを取得できます。

$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
}
于 2013-08-11T09:59:15.957 に答える