【问题标题】:Magento change product name adding to cartMagento 更改产品名称添加到购物车
【发布时间】:2012-12-03 13:47:34
【问题描述】:

我想在 Magento CE 1.7 中将某些产品添加到购物车时更改一些值

我正在为此尝试使用观察者checkout_cart_add_product_complete。如果我尝试更改产品名称或产品图片,更改价格 (CustomPrice) 效果很好,但它没有保存。

有没有办法在添加到购物车时更改此属性?

public function checkout_cart_add_product_complete(Varien_Event_Observer $observer) {
    [...]
            // Set new Price
            $lastAddedItem->setOriginalCustomPrice($originalProduct->getPrice());
            $lastAddedItem->setCustomPrice($originalProduct->getPrice());

            // Set Product-Name
            $lastAddedItem->setName($originalProduct->getName());

            // Set Product-Images
            $lastAddedItem->setImage($originalProduct->getImage());
            $lastAddedItem->setSmallImage($originalProduct->getSmallImage());
            $lastAddedItem->setThumbnail($originalProduct->getThumbnail());

            // Save updated Item and Cart
            //$lastAddedItem->save();
            Mage::getSingleton('checkout/cart')->save();

            // Recalc Totals and save
            $quote->setTotalsCollectedFlag(false);
            $quote->collectTotals();
            $quote->save();

            Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
}

【问题讨论】:

    标签: magento cart


    【解决方案1】:

    函数 Mage_Sales_Model_Quote_Item::setProduct 会在每次保存(更新)产品时重置一些基本信息。幸运的是,您可以关注“sales_quote_item_set_product”事件。

    config.xml

    <config>
    ...
        <global>
            <events>
                <sales_quote_item_set_product>
                    <observers>
                        <samples>
                            <type>singleton</type>
                            <class>samples/observer</class>
                            <method>salesQuoteItemSetProduct</method>
                        </samples>
                    </observers>
                </sales_quote_item_set_product>
            </events>
        <global>
    ...
    </config>
    

    Observer.php

    class Mynamespace_Samples_Model_Observer
    {
        public function salesQuoteItemSetProduct(Varien_Event_Observer $observer)
        {
            /* @var $item Mage_Sales_Model_Quote_Item */
            $item = $observer->getQuoteItem();
    
            $item->setName('Ians custom product name');
    
            return $this;
        }
    }
    

    【讨论】:

    • 很好,谢谢。但这仍然不是我真正需要的。因为更改没有按顺序保存。我试图在添加到购物车时更改产品的一些细节。所以它应该在结帐(购物车/评论)中无处不在,之后(帐户->查看订单,...)我不想在结帐中的多个位置更改详细信息
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多