Magento复制块输出在xml布局


Magento duplicate block output in xml layout

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

,它的工作原理,但我希望相同的菜单出现在页面的不同部分也具有相同的内容。是否有一种方法可以复制该块的输出,以便我可以显示它而不复制代码?

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

$this->getChildHtml('footer_links2');

如果是,您可以将同一行代码放置在菜单的其他位置。也就是说,你可以把代码放在页眉和页脚。

要小心,但有"相同的父"。如果该块在header块中以xml格式声明,则不能在模板的footer块中调用它。

我更喜欢用:

<?php echo $this->getBlockHtml('footer_links2'); ?>

因为它不依赖于父块。我是从管理区到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()导航到原始父块。

<?php echo $this->getParentBlock()->getParentBlock()->getBlockHtml('footer_links2'); ?>