php - 将产品添加到购物车之前的 Magento 事件

标签 php events magento

我想根据客户选择的选项计算价格。
例如,有两个可配置的属性 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()
  • 关于php - 将产品添加到购物车之前的 Magento 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12530063/

    相关文章:

    javascript - 处理大型数据集的图形和显示的最佳方法

    php - 无法在 PHP 中设置 utf8 字符集

    JavaScript 阻止触摸在 body 元素上移动,在其他元素上启用

    events - 在 Silverlight 4 Datagrid 上实现双击事件

    ajax - 以编程方式将产品添加到用户的远程 magento 购物车

    php - jw播放器: Error loading player: No playable sources found

    php - 使用 Curl 代理发布数据不返回任何内容

    c# - 递归触发 SizeChanged 事件

    magento - 根据 product_id 或 user_id(供应商)过滤订单

    php - Magento:如何在我的 Magento 扩展程序中包含 “debug flag”?