0

在产品详情页面,产品价格是 50 美元,我使用 JavaScript 将价格更改为 80 美元,但添加到购物车时,结帐页面仍然是 50 美元。如何让它在结帐页面仍然是 80 美元?

4

1 回答 1

0

您需要使用“sales_quote_add_item”magento 事件来更新购物车会话中的产品价格。您必须为此目的制作一个自定义模块。

在 app/etc/modules/Company_All.xml 中创建一个文件

<?xml version="1.0"?> <config>   <modules>
    <Company_Product>
      <codePool>local</codePool>
      <active>true</active>
    </Company_Product>   </modules> </config>

在 app/code/local/Company/Product/etc/config.xml 中为我们的模块文件创建配置文件

<?xml version="1.0"?> <config>   <global>
    <models>
        <product>
             <class>Company_Product_Model</class>
        </product>
    </models>
    <events>
      <sales_quote_add_item><!--Event to override price after adding product to cart-->
        <observers>
          <company_product_price_observer><!--Any unique identifier name -->
            <type>singleton</type>
            <class>Company_Product_Model_Price_Observer</class><!--Our observer class name-->
            <method>update_book_price</method><!--Method to be called from our observer class-->
          </company_product_price_observer>
        </observers>
      </sales_quote_add_item>
    </events>   </global> </config>

在 app/code/local/Company/Product/Model/Price/Observer.php 中创建我们的观察者文件

class Company_Product_Model_Price_Observer{
    public function update_book_price(Varien_Event_Observer $observer) {
        $quote_item = $observer->getQuoteItem();

        //if(){ //your logic goes here
            $customprice = 50;
        //}
        $quote_item->setOriginalCustomPrice($customprice);
        $quote_item->save();
        return $this;
    }

}
于 2013-09-05T11:06:43.657 回答