Câu trả lời:
Magento có ba "khu vực" theo mặc định: frontend
, adminhtml
và install
, được sử dụng để tách một vài điều như bản dịch và thiết kế.
Khu vực được tải và thiết lập một lần khi Magento được khởi tạo, xem Mage_Core_Model_App_Area::load()
chi tiết. Bạn sẽ nhận thấy một khu vực bổ sung admin
, nhưng có vẻ như điều này không được sử dụng (bất cứ nơi nào nữa?). Một số mô-đun có thể thêm các khu vực mới, ví dụ test
bởi EcomDev_PHPUnit
.
Người quan sát cũng được xác định cho mỗi khu vực, nhưng ngoài ra, bạn có thể xác định sau đó <global>
để họ áp dụng trong tất cả các khu vực.
Chỉ những người quan sát được xác định trong khu vực hiện tại và trong global
sẽ được thực thi. Các nhà quan sát toàn cầu luôn đến đầu tiên.
Xác định một người quan sát trong <default>
hoặc <admin>
thực sự không nên làm việc gì cả.
install
- nó được sử dụng trong thuật sĩ cài đặt Magento. Hãy xem Mage_Install_Controller_Action
(thực ra cái này dường như chỉ được sử dụng cho chủ đề, vì vậy bạn không thể tạo người quan sát cụ thể cho install
)
Nếu bạn gọi người quan sát giữa <frontend></frontend>
thì sự kiện người quan sát đó sẽ chỉ được thực hiện trên frontend. Nếu bạn viết giữa <adminhtml></adminhtml>
nó sẽ chỉ được thực hiện trong phần phụ trợ và nếu bạn viết giữa <global></global>
thì sự kiện người quan sát sẽ hoạt động trên cả frontend và backend.
ví dụ: lấy một sự kiện gọi là "core_block_abauge_prepare_layout_after"
Trường hợp 1:-
<adminhtml>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</adminhtml>
Sự kiện quan sát "<core_block_abstract_prepare_layout_after>"
sẽ chỉ hoạt động trong phần phụ trợ
Trường hợp 2: -
<frontend>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</frontend>
Sự kiện quan sát "<core_block_abstract_prepare_layout_after>"
sẽ chỉ hoạt động ở frontend
Trường hợp 3: -
<global>
<events>
<core_block_abstract_prepare_layout_after>
</core_block_abstract_prepare_layout_after>
</events>
</global>
Sự kiện quan sát viên "<core_block_abstract_prepare_layout_after>"
sẽ chỉ hoạt động ở ngoại vi và phụ trợ