如果客户属于特定群组,我正在努力更新购物车价格。 如果客户已登录并将产品添加到购物车,则购物车价格与我为该客户组添加的相同,但如果我首先在购物车中添加产品然后登录该帐户,则购物车价格不会更新。 如何在客户登录时更新购物车?
答案 0 :(得分:0)
您需要设置一个在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,因为我需要它在其他地方,但一切都可以在一个函数中完成。它对我有用。您甚至可以跟随客户获得价格。