magento如何在结帐页面更改购物车帐户

时间:2013-07-24 13:06:38

标签: magento

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

1 个答案:

答案 0 :(得分: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;
    }

}