在Magento上登录客户登录时更新购物车

时间:2014-08-07 09:30:01

标签: magento

如果客户属于特定群组,我正在努力更新购物车价格。 如果客户已登录并将产品添加到购物车,则购物车价格与我为该客户组添加的​​相同,但如果我首先在购物车中添加产品然后登录该帐户,则购物车价格不会更新。 如何在客户登录时更新购物车?

1 个答案:

答案 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,因为我需要它在其他地方,但一切都可以在一个函数中完成。它对我有用。您甚至可以跟随客户获得价格。

相关问题