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?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 2 创建 Widget

在主题中扩展Magento小部件布局

Qt 设计师;难以将小部件放置在正确的父级中

如何将小部件添加到 Dojo gridx/Grid 标题?

如何将小部件动态添加到网格?

有没有办法将小部件显示为两个不同的选项卡?