Antworten:
Magento hat standardmäßig drei "Bereiche" : frontend
, adminhtml
und install
, mit denen verschiedene Dinge wie Übersetzungen und Designs getrennt werden.
Der Bereich wird einmal geladen und festgelegt, wenn Magento initialisiert wird. Weitere Mage_Core_Model_App_Area::load()
Informationen finden Sie unter. Sie werden einen zusätzlichen Bereich bemerken admin
, aber es scheint, dass dieser nicht mehr verwendet wird (irgendwo mehr?). Einige Module fügen möglicherweise neue Bereiche hinzu, z. B. test
von EcomDev_PHPUnit
.
Beobachter werden auch pro Bereich definiert, aber zusätzlich können Sie dann in definieren <global>
, dass sie in allen Bereichen gelten.
Es werden nur Beobachter ausgeführt, die im aktuellen Bereich und in definiert sind global
. Globale Beobachter stehen immer an erster Stelle.
Das Definieren eines Beobachters in <default>
oder <admin>
sollte eigentlich überhaupt nicht funktionieren.
install
- es wird während des Magento-Installationsassistenten verwendet. Schauen Sie sich das an Mage_Install_Controller_Action
(eigentlich scheint dieses nur für das Thema verwendet zu werden, daher können Sie keine Beobachter speziell für erstellen install
)
Wenn Sie zwischenzeitlich <frontend></frontend>
Beobachter aufrufen, wird dieses Beobachterereignis nur im Frontend ausgeführt. Wenn Sie dazwischen schreiben <adminhtml></adminhtml>
, wird es nur im Backend ausgeführt. Wenn Sie dazwischen schreiben, <global></global>
funktioniert das Beobachterereignis sowohl im Frontend als auch im Backend.
Nehmen Sie zum Beispiel ein Ereignis mit dem Namen "core_block_abstract_prepare_layout_after".
Fall 1:-
<adminhtml>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</adminhtml>
Das Beobachterereignis "<core_block_abstract_prepare_layout_after>"
funktioniert nur im Backend
Fall 2: -
<frontend>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</frontend>
Das Beobachterereignis "<core_block_abstract_prepare_layout_after>"
funktioniert nur im Frontend
Fall 3: -
<global>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</global>
Das Observer-Ereignis "<core_block_abstract_prepare_layout_after>"
funktioniert nur im Frontend und Backend