将产品添加到购物车之前的Magento活动

bla*_*aps 4 php events magento

我想根据客户选择的选项计算价格.例如,有两个可配置的属性length,width

在将产品添加到购物车之前,我想根据选定的长度和宽度修改价格

$finalPrice=$rrp+($length*$width)
Run Code Online (Sandbox Code Playgroud)

有没有可用于实现此目的的活动?

ben*_*rks 9

我会看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()