Magento:如何将小部件放入布局 xml?
Posted
技术标签:
【中文标题】Magento:如何将小部件放入布局 xml?【英文标题】:Magento: How do I put widgets into a layout xml? 【发布时间】:2011-03-06 21:56:11 【问题描述】:我正在使用 Magento 企业版。它包括一个横幅小部件,我想在我的模板内部使用它,而不是从 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】:事实证明,它没有插入任何有意义的数据,因为它没有接收到它的参数。需要通过action标签设置非标准参数:
<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>
【讨论】:
如果小部件块是 core/text_list 块的子块,这似乎有效(至少在 1.6.2 中),将这样的小部件直接放入根块似乎不会呈现.【参考方案2】:既然题目已经解决了,我有一个题外话的解决办法
如果需要,可以将其设置为 .phtml 文件中的块。
<?php echo $this->getLayout()->createBlock('enterprise_banner/widget_banner')->setBannerIds('4')->setDisplayMode('fixed')->setTemplate('banner/widget/block.phtml')->toHtml(); ?>
【讨论】:
以上是关于Magento:如何将小部件放入布局 xml?的主要内容,如果未能解决你的问题,请参考以下文章