我的工作是更新购物车价格,如果客户属于特定的组。如果客户已经登录并将产品添加到购物车,购物车价格与我为该客户组添加的价格相同,但如果我首先在购物车中添加产品,然后登录帐户,购物车价格不会更新。如何在客户登录时更新购物车?
发布于 2014-08-07 20:14:39
您需要设置一个在customer_register_success上触发的观察者:
<customer_register_success>
<observers>
<yourcompany_yourmodule>
<type>model</type>
<class>yourmodule/observer</class>
<method>modifyItemFinalPrice</method>
</yourcompany_yourmodule>
</observers>
</customer_register_success>了解代码中可以包含的内容:
/**
* appelé lors de l'ajout au panier et à chaque fois que le panier est revalidé
* @param Varien_Event_Observer $observer
*/
public function modifyItemFinalPrice(Varien_Event_Observer $observer){
$item = $observer->getData('quote_item');
$this->_manageItem($item);
}
/**
*
* @param Mage_Sales_Model_Quote_Item $item
*/
public function _manageItem($item) {
try {
$product = $item->getProduct();
$newPrice = $this->_calculatePrice($product);
if ($newPrice){
$item->setOriginalCustomPrice($newPrice);
}
} catch (Exception $e){
echo $e->getTraceAsString();
}
}
/**
*
* Retourne un prix en fonction des différentes contraintes du site
*
* @param Mage_Catalog_Model_Product $product
* @return float|boolean
*/
private function _calculatePrice(&$product){
$website_id = Mage::app()->getWebsite()->getId();
$store_id = Mage::app()->getStore()->getId();
$customer = Mage::getModel('customer/session');
$groupeid = $customer->getCustomerGroupId();
Your logic here...
}我使用函数_calculatePrice来计算价格,对于_manageitem,因为我需要在其他地方使用它,但是所有的事情都可以在一个函数中完成。这对我来说很好。你甚至可以根据客户的需求来获取价格。
https://stackoverflow.com/questions/25178934
复制相似问题