thay đổi nội dung trang trước khi tải trong magento


7

Tôi muốn tự động thay đổi nội dung của trang cms trước khi tải trang trên giao diện người dùng.

Câu trả lời:


16

Vì mọi yêu cầu được xử lý thông qua bộ điều khiển trong Magento, chúng tôi sẽ bắt đầu từ Mage_Cms_PageControllernơi chúng tôi thấy rằng người cms/pagetrợ giúp thực sự kết xuất trang.

Điều này được thực hiện trong phương pháp _renderPage. Trong phương pháp này, chúng tôi sẽ tìm thấy Sự kiện cms_page_rendertrên dòng 107. Sự kiện này cung cấp cho bạn, trong số các đối tượng khác, pageđối tượng.

Đối tượng này chứa tất cả dữ liệu của trang của bạn. Bây giờ bạn có thể quan sát sự kiện này từ tiện ích mở rộng bản dựng tùy chỉnh của mình bằng cách thêm nó vào tệp config.xml

<?xml version="1.0"?>
<config>
  <global>
    <events>
      <cms_page_render>
        <observers>
          <your_extension_cms_observer>
            <type>singleton</type>
            <class>Your_Extension_Model_Csm_Observer</class>
            <method>changeContent</method>
          </your_extension_cms_observer>
        </observers>
      </cms_page_render>     
    </events>
  </global>
</config>

Điều này sẽ gọi lớp Your_Extension_Model_Csm_Observer, phương thức changeContentsẽ trông giống như thế này

class Your_Extension_Model_Csm_Observer
{

    public function changeContent($observer)
    {
      $event = $observer->getEvent();
      $cms_page = $event->getPage();   

      [...]
    your code goes here
      [...]

      return $this;
    }
}

Để biết thêm thông tin về người quan sát kiểm tra trang Wiki này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.