我想根据客户选择的选项计算价格。例如,有两个可配置的属性length,width
在将产品添加到购物车之前,我想根据选择的长度和宽度修改价格
$finalPrice=$rrp+($length*$width)
是否有任何活动可以实现这一目标?
我会查看catalog_product_get_final_price,有关示例用法,请参阅Mage_CatalogRule_Model_Observer::processFrontFinalPrice()。请注意,基于期权的定价是在此事件之后处理的;见Mage_Catalog_Model_Product_Type_Price::getFinalPrice()和Mage_Catalog_Model_Product_Type_Configurable_Price::getFinalPrice()。
请记住,自定义此功能需要对不同的报价状态、客户状态、产品类型等进行大量测试。例如,考虑第一次添加到购物车的产品,然后从购物车更新其数量. 通常有必要在几个方法/观察者中实现逻辑来处理所有排列。
客户未登录时在 CE1.7 中触发的事件的完整列表、新购物车、简单产品:
controller_front_init_routers
Mage_Cms_Controller_Router::initControllerRouters()controller_action_predispatch
Mage_Log_Model_Visitor::initByRequest()Mage_PageCache_Model_Observer::processPreDispatch()Mage_Persistent_Model_Observer::emulateQuote()Mage_Persistent_Model_Observer_Session::renewCookie()Mage_Persistent_Model_Observer::checkExpirePersistentQuote()Mage_Persistent_Model_Observer::emulateCustomer()catalog_product_load_after
Mage_CatalogInventory_Model_Observer::addInventoryData()custom_quote_process
Mage_Persistent_Model_Observer::setLoadPersistentQuote()sales_quote_config_get_product_attributes
Mage_SalesRule_Model_Observer::addProductAttributes()prepare_catalog_product_collection_prices
Mage_CatalogRule_Model_Observer::prepareCatalogProductCollectionPrices()sales_quote_item_collection_products_after_load
Mage_CatalogInventory_Model_Observer::addInventoryDataToCollection()sales_quote_item_qty_set_after
Mage_CatalogInventory_Model_Observer::checkQuoteItemQty()sales_quote_collect_totals_before
Mage_Tax_Model_Observer::quoteCollectTotalsBefore()sales_quote_address_collect_totals_before
Mage_Sales_Model_Observer::changeQuoteCustomerGroupId()sales_quote_address_collect_totals_after
Mage_Sales_Model_Observer::restoreQuoteCustomerGroupId()sales_quote_address_collect_totals_before
Mage_Sales_Model_Observer::changeQuoteCustomerGroupId()catalog_product_get_final_price
Mage_CatalogRule_Model_Observer::processFrontFinalPrice()sales_quote_address_collect_totals_after
Mage_Sales_Model_Observer::restoreQuoteCustomerGroupId()sales_quote_collect_totals_after
Mage_Sales_Model_Observer::setQuoteCanApplyMsrp()sales_quote_save_before
Mage_Persistent_Model_Observer::setQuotePersistentData()sales_quote_save_after
Mage_Checkout_Model_Observer::salesQuoteSaveAfter()Mage_Log_Model_Visitor::bindQuoteCreate()sales_quote_item_save_before
Mage_Reports_Model_Event_Observer::checkoutCartAddProduct()checkout_cart_add_product_complete
Mage_Wishlist_Model_Observer::processAddToCart()controller_action_postdispatch
Mage_Log_Model_Visitor::saveByRequest()controller_front_send_response_after
Mage_Persistent_Model_Observer_Session::synchronizePersistentInfo()