Лучший способ сделать это - просто повторно объявить определение наблюдателя в файле config.xml.
Например, мне нужно было отключить enterprise_persistent_cart наблюдатель, который был объявлен для события controller_action_layout_generate_blocks_after модулем Enterprise_Persistent .
Объявление в файле config.xml Enterprise_Persistent такое
<frontend>
<events>
<controller_action_layout_generate_blocks_after>
<observers>
<enterprise_persistent_cart>
<class>enterprise_persistent/observer</class>
<method>removeCartLink</method>
</enterprise_persistent_cart>
</observers>
</controller_action_layout_generate_blocks_after>
Итак, я создал модуль, и в файле config.xml моего модуля я сделал следующее:
<frontend>
<events>
<controller_action_layout_generate_blocks_after>
<observers>
<enterprise_persistent_cart>
<type>disabled</type>
</enterprise_persistent_cart>
</observers>
</controller_action_layout_generate_blocks_after>
Я также сделал мой модуль зависимым от модуля Enterprise_Persistent. Это необходимо, чтобы убедиться, что файл config.xml моего модуля обработан ПОСЛЕ файла config.xml модуля Enterprise_Persistent. Я сделал это, выполнив следующие действия в файле объявления моего модуля app / etc / modules My_Module.xml
<config>
<modules>
<Atlex_AddCartLinkToHeader>
<active>true</active>
<codePool>local</codePool>
<depends>
<Enterprise_Persistent/>
</depends>
</Atlex_AddCartLinkToHeader>
</modules>
</config>
Для каждого события может быть только одно действие наблюдателя, объявленное для данного имени наблюдателя. Поэтому, пока файл config.xml моего модуля обрабатывается после файла config.xml модуля Enterprise_Persistent, моя декларация наблюдателя для enterprise_persistent_cart будет выполнением действия наблюдателя, которое выполняется.
Узел <<strong> type > отключен <<strong> / type > запретит наблюдателю запускать. Если вы хотите переопределить наблюдателя для выполнения собственного метода, то вы просто замените узел <<strong> type > на методы наблюдателя <<strong> class > и <<strong> . > узлы.
Это позволяет переопределять / отключать наблюдателей без переопределения основных классов. Он более расширяем для будущих разработчиков.