我在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'); ?>