Magento:如何在将商品添加到购物车时更改商品价格

Lau*_*ent 4 magento cart

我希望能够在我将其添加到购物车时以编程方式(而不是通过目录或购物车规则)更改商品价格.

以下答案通过价格更改以编程方式将产品添加到购物车,显示更新购物车时如何操作,而不是在添加产品时.

谢谢

Xma*_*cal 10

您可以使用观察者类来收听checkout_cart_product_add_after,并使用产品的"超级模式"来针对报价项目设置自定义价格.

在/app/code/local/{namespace}/{yourmodule}/etc/config.xml中:

<config>
    ...
    <frontend>
        ...
        <events>
            <checkout_cart_product_add_after>
                <observers>
                    <unique_event_name>
                        <class>{{modulename}}/observer</class>
                        <method>modifyPrice</method>
                    </unique_event_name>
                </observers>
            </checkout_cart_product_add_after>
        </events>
        ...
    </frontend>
    ...
</config>
Run Code Online (Sandbox Code Playgroud)

然后在/app/code/local/{namespace}/{yourmodule}/Model/Observer.php创建一个Observer类

<?php
    class <namespace>_<modulename>_Model_Observer
    {
        public function modifyPrice(Varien_Event_Observer $obs)
        {
            // Get the quote item
            $item = $obs->getQuoteItem();
            // Ensure we have the parent item, if it has one
            $item = ( $item->getParentItem() ? $item->getParentItem() : $item );
            // Load the custom price
            $price = $this->_getPriceByItem($item);
            // Set the custom price
            $item->setCustomPrice($price);
            $item->setOriginalCustomPrice($price);
            // Enable super mode on the product.
            $item->getProduct()->setIsSuperMode(true);
        }

        protected function _getPriceByItem(Mage_Sales_Model_Quote_Item $item)
        {
            $price;

            //use $item to determine your custom price.

            return $price;
        }

    }
Run Code Online (Sandbox Code Playgroud)

  • 以下是超模的解释:"引用超级模式标志意味着我们使用报价无限制地使用"例如:如果超级模式设置为true,则磁铁不会检查产品是否在目录中可见 (2认同)