magento的事件处理
要监听一个事件,在模块的config.xml要配置相应的参数,可以参考Openstream/GeoIP模块:
<?xml version="1.0"?>
<config>
<modules>
<Openstream_GeoIP>
<version>0.1.2</version>
</Openstream_GeoIP>
</modules>
<global>
……
<events>
<controller_front_init_before>
<observers>
<geoip>
<type>singleton</type>
<class>geoip/observer</class>
<method>controllerFrontInitBefore</method>
</geoip>
</observers>
</controller_front_init_before>
</events>
</global>
……
</config>
即在global/events标签下添加一个子元素,
标签名为要观察的事件名,接下来是observers,再下来就是你自己的模块名,有class和method来定义相应的类和方法;
这些事件什么时候会触发呢,可以看下方法Mage_Core_Controller_Varien_Front::init的代码
public function init()
{
Mage::dispatchEvent('controller_front_init_before', array('front'=>$this));
……
Mage::dispatchEvent('controller_front_init_routers', array('front'=>$this));
……
return $this;
}
目前系统中的事件有
[0] => resource_get_tablename
[1] => core_collection_abstract_load_before
[2] => core_collection_abstract_load_after
[3] => controller_front_init_before
[4] => controller_front_init_routers
[5] => model_load_after
[6] => core_abstract_load_after
[7] => core_locale_set_locale
[8] => controller_action_predispatch
[9] => customer_session_init
[10] => controller_action_predispatch_catalog
[11] => controller_action_predispatch_catalog_product_view
[12] => catalog_controller_product_init_before
[13] => model_load_before
[14] => catalog_product_load_before
[15] => catalog_product_load_after
[16] => customerlocator_session_init
[17] => catalog_controller_product_init
[18] => catalog_controller_product_init_after
[19] => catalog_controller_product_view
[20] => controller_action_layout_load_before
[21] => core_layout_update_updates_get_after
[22] => controller_action_layout_generate_xml_before
[23] => controller_action_layout_generate_blocks_before
[24] => core_block_abstract_prepare_layout_before
[25] => core_block_abstract_prepare_layout_after
[26] => core_layout_block_create_after
[27] => core_session_abstract_clear_messages
[28] => controller_action_layout_generate_blocks_after
[29] => controller_action_layout_render_before
[30] => controller_action_layout_render_before_catalog_product_view
[31] => core_block_abstract_to_html_before
[32] => core_block_abstract_to_html_after
[33] => uioptimization_canonicalurl_before
[34] => sales_order_collection_load_before
[35] => sales_order_collection_load_after
[36] => custom_quote_process
[37] => checkout_quote_init
[38] => page_block_html_topmenu_gethtml_before
[39] => catalog_category_tree_init_inactive_category_ids
[40] => catalog_entity_attribute_load_after
[41] => eav_collection_abstract_load_before
[42] => catalog_category_collection_load_before
[43] => catalog_category_collection_load_after
[44] => catalog_category_load_before
[45] => catalog_category_load_after
[46] => page_block_html_topmenu_gethtml_after
[47] => core_block_messages_get_grouped_html_after
[48] => catalog_helper_output_construct
[49] => catalog_product_collection_load_before
[50] => catalog_product_collection_load_after
[51] => catalog_product_collection_apply_limitations_before
[52] => customer_group_load_before
[53] => customer_group_load_after
[54] => catalog_product_get_final_price
[55] => currency_display_options_forming
[56] => catalog_product_view_config
[57] => catalog_block_product_status_display
[58] => catalog_product_is_salable_before
[59] => catalog_product_is_salable_after
[60] => catalog_product_type_configurable_price
[61] => catalog_product_collection_apply_limitations_after
[62] => catalog_product_upsell
[63] => core_abstract_load_before
[64] => controller_action_postdispatch_catalog_product_view
[65] => controller_action_postdispatch_catalog
[66] => controller_action_postdispatch
[67] => controller_front_send_response_before
[68] => http_response_send_before
[69] => controller_front_send_response_after

浙公网安备 33010602011771号