впрыскивание блока magento в голову через наблюдаемое событие - PullRequest
6 голосов
/ 15 февраля 2011

какие события magento frontend я должен наблюдать, если я хочу иметь возможность вставлять блоки в блок ("head")?

и, находясь в коде наблюдателя, как проверить, имеет ли текущий макетустановлен некоторый дескриптор (например, not_logged_in).

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Попробуйте событие

controller_action_layout_generate_blocks_after

.Объект Layout и его дочерние блоки должны создаваться в момент возникновения события.

Существует только один объект Layout, и вы можете взять обработчики в игре с помощью

// get the layout->get the updates manager->get the handles
$handles = Mage::getSingleton('core/layout')->getUpdate()->getHandles();
var_dump($handles);

Если вы работаете над внешним кодом и пытаетесь придерживаться соглашений magento, этовозможно, лучше добавить файл layout.xml в свой модуль и использовать файл макета для добавления своих блоков.Хотя это менее весело, чем придумывать что-то новое!

1 голос
/ 15 февраля 2011

Я ценю плагин в блоге, но Clockworkgeek является правильным. Лучший способ сделать это - использовать файл макета, чтобы добавить нужные вам блоки. Эти блоки также могут изменять свое собственное поведение рендеринга на основе произвольного кода.

Если есть причина, по которой вы не можете использовать макеты, уточните немного в своем вопросе, и мы будем рады помочь.

Спасибо, Джо

...