Magento: Как поместить виджеты в макет xml?
Я использую Magento Enterprise Edition. Он включает в себя виджет для баннеров, который я хочу использовать внутри своего шаблона, а не изнутри блока содержимого CMS. Мне удалось генерировать вывод изнутри блока контента:
{{widget type="enterprise_banner/widget_banner" display_mode="fixed" rotate="series" banner_ids="4" template="banner/widget/block.phtml" unique_id="744a56c9a042cc9fa166163c12d869d9"}}
Прост достаточно. Поэтому внутри моего макета xml я пробовал это:
<block type="enterprise_banner/widget_banner" name="hero_banners" as="hero_banners" display_mode="fixed" rotate="series" banner_ids="4" template="banner/widget/block.phtml" unique_id="744a56c9a042cc9fa166163c12d869d9" />
Те же параметры; Я просто добавил имя и как. И затем, внутри моего шаблона...
<?php echo $this->getChildHtml('hero_banners'); ?>
Но я не получаю выход. Профайлер отмечает, что блок hero_banners загружен, но его файл шаблона (banner/widget/block.phtml) никогда не запускается.
Кто-нибудь знает, что я делаю неправильно?
-P
Ответы
Ответ 1
Оказывается, он не вставлял каких-либо значимых данных, потому что он не получал своих параметров. Для нестандартных параметров необходимо установить теги действий:
<block type="enterprise_banner/widget_banner" name="hero_banners" as="hero_banners" template="banner/widget/hero.phtml">
<action method="setDisplayMode"><value>fixed</value></action>
<action method="setBannerIds"><value>4</value></action>
</block>
Ответ 2
Поскольку тема уже решена, у меня есть решение без темы
Это может быть установлено как блок в файле .phtml, если это необходимо.
<?php echo $this->getLayout()->createBlock('enterprise_banner/widget_banner')->setBannerIds('4')->setDisplayMode('fixed')->setTemplate('banner/widget/block.phtml')->toHtml(); ?>