2012-02-03 4 views
0

У меня есть модуль, который добавляет немного piiece коды указанных статических блоков - это означает, что есть 2 фильтра:Magento Events. Поймать статический блок рендеринг или указанного блок рендеринга

  1. статические блоки только
  2. лишь некоторые из них, указаны.

В настоящее время у меня есть наблюдатель, который ловит событие abstract_html_after и проверяет, является ли это вообще статическим блоком и находится ли этот блок в указанном списке блоков. Если это так, он добавляет этот маленький html-аддон в блок.

Проблема в том, что этот алгоритм замедляет систему ужасно.

Какие могут быть решения?

ответ

1

В настоящее время нет конкретного события блока CMS, которое вы можете использовать, что сужает область вашего события.
Вы не можете даже использовать событие cms_block_load_after на модели cms/block, чтобы сделать это, потому что в Mage_Cms_Model_Block нет $_eventPrefix, поэтому вы застряли с core_abstract_load_after.

Единственное решение состоит в том, чтобы переписать блок cms/block block или model и либо отправить туда специальное событие, либо просто добавить свой контент непосредственно в перезаписанный класс.

+0

Какой был бы лучший вариант? Переписать класс или реализовать дополнительный наблюдатель, который будет запускать событие cms_block? В обоих случаях я должен проверить, является ли это блоком cms или каким-либо другим блоком. –

+0

Реализация дополнительного наблюдателя также потребует перезаписи. Я думаю, что я бы переписал класс модели cms/block, если он предназначен для конкретного проекта. – Vinai

+0

Дело в том, что это важная часть модуля. Почему дополнительный наблюдатель переписывает? –

Смежные вопросы