如何在添加到magento购物车之前更改价格?

Nav*_*bos 0 observers magento magento-1.9.1

如何在添加到购物车Magento时更改产品价格,示例:

假设我正在尝试添加1个价格10美元的产品,我想用10美元*5 = 50美元显示价格,当我添加2个产品时,我想要显示10美元*10 = 100美元.所以它的公共乘数是5.(x的倍数).

Nav*_*bos 5

在app/community/Custom_Module/Modulename/Model中创建Observer.php文件,复制该文件中的以下代码.

class Custom_Module_Modulename_Model_Observer
{
    public function _construct()
    {
    }

    public function getNewPrice()
    {

        $login  = Mage::getSingleton('customer/session')->isLoggedIn();
        $roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
        $userrole   = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
        $userrole   = strtolower($userrole);
        $quote = Mage::getSingleton('checkout/session')->getQuote();
        $cartItems = $quote->getAllVisibleItems();
        foreach ($cartItems as $item) {
            $productId = $item->getProductId();
            $product = Mage::getModel('catalog/product')->load($productId);
        }
        $batch_qty = $product->getBatchQty();
        $actualPrice = $product->getPrice();
        $specialPrice = $product->getFinalPrice();
        if (isset($batch_qty) && $userrole=="retailer") {
            if (isset($specialPrice)) {
                $newprice = $specialPrice*$batch_qty;
            } else {

                $newprice = $actualPrice*$batch_qty;
            }

        } else {
            $newprice= $actualPrice;
        }

        return $newprice;
    }

    public function updatePrice($observer)
    {
        $event = $observer->getEvent();
        $product = $event->getProduct();
        $quote_item = $event->getQuoteItem();
        $new_price = $this->getNewPrice();
        $quote_item->setOriginalCustomPrice($new_price);
        //$quote_item->save();
        $quote_item->getQuote()->save();
        //Mage::getSingleton('checkout/cart')->save();
    }

}
Run Code Online (Sandbox Code Playgroud)

复制以下代码并将其粘贴到您的app/community/Custom_Module/Modulename/etc/config.xml标记内

> <events>            
>           <sales_quote_add_item>
>               <observers>
>                  <Custom_Module_Modulename_model_observer>
>                     <type>singleton</type>
>                     <class>Custom_Module_Modulename_Model_Observer</class>
>                     <method>updatePrice</method>
>                  </Custom_Module_Modulename_model_observer>
>              </observers>
>           </sales_quote_add_item>
>       </events>
Run Code Online (Sandbox Code Playgroud)

这对我来说很好.