【问题标题】:Magento: How do I put widgets into a layout xml?Magento:如何将小部件放入布局 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

【问题讨论】:

    标签: php xml widget magento


    【解决方案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(); ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2014-10-17
      • 2017-07-07
      • 2013-03-23
      相关资源
      最近更新 更多