Magento:如何将小部件放入布局xml中?

12
我正在使用Magento企业版。它包含一个横幅小部件,我想在模板内使用它,而不是在CMS运行的内容块内使用。我已成功从内容块内生成输出:

我正在使用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" />

同样的参数; 我只是添加了名称和“as”。然后,在我的模板内部...

<?php echo $this->getChildHtml('hero_banners'); ?>

但是我没有得到任何输出。分析工具指出hero_banners块已加载,但它的模板文件(banner/widget/block.phtml)从未运行。

有人知道我做错了什么吗?

-P

2个回答

19

原来,它没有插入任何有意义的数据,因为它没有接收到其参数。它需要通过操作标签设置非标准参数:

<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>

1
只有在widget块是core/text_list块的子级时,这似乎才有效(至少在1.6.2中)。将widget直接放入根块中似乎无法呈现。 - benz001

2

由于这个主题已经被解决,我有一个与主题无关的解决方案。

如果需要,可以将此设置为.phtml文件中的块。

<?php echo $this->getLayout()->createBlock('enterprise_banner/widget_banner')->setBannerIds('4')->setDisplayMode('fixed')->setTemplate('banner/widget/block.phtml')->toHtml(); ?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接