【问题标题】:Magento duplicate block output in xml layoutMagento在xml布局中重复块输出
【发布时间】:2014-10-13 11:15:51
【问题描述】:

我正在以这种方式在 Magento 中创建一个菜单:

<block type="page/template_links" name="footer_links2" as="footer_links2" template="page/template/links.phtml">
    <action method="setTitle"><title>Main menu</title></action>
    <action method="addLink" translate="label title" module="catalogsearch">
        <label>About us</label>
        <url helper="cms/page/getPageUrl"><pageId>3</pageId></url>
        <title>About us</title>
    </action>
    <action method="addLink" translate="label title" module="catalogsearch">
        <label>Contact us</label>
        <url helper="cms/page/getPageUrl"><pageId>4</pageId></url>
        <title>Contact us</title>
    </action>
    <!-- Other links here... -->
</block>

它有效,但我希望相同的菜单也出现在页面的不同部分,内容相同。有没有办法复制该块的输出,以便我可以在不复制代码的情况下显示它?

【问题讨论】:

    标签: php xml magento layout template-engine


    【解决方案1】:

    我猜你会在模板中调用你的块:

    $this->getChildHtml('footer_links2');
    

    如果是这样,您可以将同一行代码放在您想要菜单的其他位置。 IE。您可以将代码放在页眉和页脚中。

    要小心拥有“同一个父母”。如果块是在 header 块内的 xml 中声明的,则不能在模板的页脚内调用它。

    【讨论】:

    • 我想没有办法直接在xml中做到这一点,所以我认为这是唯一的解决方案
    【解决方案2】:

    我更喜欢使用:

    &lt;?php echo $this-&gt;getBlockHtml('footer_links2'); ?&gt;

    因为它不依赖于父块。 我从管理区得到这个想法到echo formkey。

    例如:

    // app/design/adminhtml/default/default/template/catalog/product/edit.phtml
    ...
    <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="product_edit_form" enctype="multipart/form-data">
        <?php echo $this->getBlockHtml('formkey')?>
        <div style="display:none"></div>
    </form>
    ...
    

    或者,如果呈现块副本的父块不同,则可能有一种方法可以通过getParentBlock()getChild() 导航到原始父块。

    &lt;?php echo $this-&gt;getParentBlock()-&gt;getParentBlock()-&gt;getBlockHtml('footer_links2'); ?&gt;

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 2016-02-15
      • 2010-11-09
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多