Как добавить блок в макет, если в макете существует блок CMS?

magento.stackexchange https://magento.stackexchange.com//questions/32308

Вопрос

Итак, вот ситуация.мне нужно создать core/template заблокировать программно, если есть CMS Block(Static Block) присутствует в структуре макета.Я буду использовать этот шаблон, чтобы динамически добавлять в него некоторый контент.

Если есть наблюдатель за статическими блоками, я могу его использовать.Другой вариант: я могу добиться того же с помощью макетов, если есть дескриптор макета, специфичный для статического блока (точно так же, как cms_page дескриптор макета).

Но мне пока не удалось найти наблюдателя за статическими блоками.Поэтому я не могу пойти с наблюдателем.Я также ищу любой дескриптор макета статического блока.Этот поиск также привел меня в отчаяние.Я не смог найти ни одного.Таким образом, обновление макета также невозможно.

Так что, похоже, единственный способ добиться этого — это наблюдать за любыми общими событиями (может быть, controller_action_layout_generate_blocks_after).Но я чувствую, что это слишком плохой путь..

Так что мне теперь делать?Каким будет лучший способ сделать это?Могу ли я создать собственный прослушиватель событий для статических блоков (не знаю, возможно ли это!!)?Поделитесь своими мыслями.

Примечание : Я создаю расширение.Я хочу, чтобы было как можно более чисто.:)

Это было полезно?

Решение 2

Кажется, другого способа сделать это нет.Итак, я слушал общее событие controller_action_layout_generate_blocks_after .Там я создал новый блок, если присутствует блок cms.

Другие советы

Возможно, вы можете использовать помощник в XML и проверять наличие внутри него условия, выполняя условие внутри XML, а затем действовать соответствующим образом.Возможно, это лучше, чем наблюдать за загрузкой каждого блока наблюдателем.

Вот ответ на использование подхода XML.

<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
    <label>Site Map</label>
    <url helper="catalog/map/getCategoryUrl" />
    <title>Site Map</title>
</action>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top