在产品详情页面中,产品价格为50美元,我用JavaScript将价格改为80美元,但加入购物车时,结账页面仍为50美元。如何在结账页面上让它仍然是80美元?
答案 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;
}
}