请遵循以下代码,该代码取自我的Magento Commerce主题:
从layout / page.xml中提取
<block type="page/html_header" name="header" as="header">
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
<block type="directory/currency" name="store_currency_selector" as="store_currency_selector" template="directory/currency_top.phtml"/>
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/template_links" name="top.links.mobile" as="topLinksMobile"/>
<block type="checkout/cart_sidebar" name="cart_sidebar_mobile" as="cartSidebarMobile" template="checkout/cart/topbar.phtml"/>
</block>
<block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
<label>Page Header</label>
<action method="setElementClass"><value>top-container</value></action>
</block>
<block type="checkout/cart_sidebar" name="cart_sidebar" as="topcart" template="checkout/cart/topbar.phtml"/>
</block>
从template / catalog / navigation / top.phtml中提取
<li class="level0 nav-2 active level-top first parent">
<a href="javascript:;">ACCOUNT</a>
<?php echo $this->getParentBlock()->getChildHtml('topLinksMobile'); ?>
</li>
<li class="level0 nav-3 active level-top first parent">
<a href="javascript:;">CART</a>
<?php echo $this->getChildHtml('cartSidebarMobile'); ?>
</li>
基本上,我正在尝试做的是在“topMenu”块中创建两个子块,然后使用“getChildHtml”函数将它们打印到模板中。
不幸的是,我的函数调用失败了,而在top.phtml生成的内容之前加载了两个块。
请告诉我一些关于我做错事的建议。
非常感谢提前。
答案 0 :(得分:0)
在以下文件中尝试调用函数
template/page/html/topmenu.phtml
答案 1 :(得分:0)
我已经进步了一点。
阅读:Magento - display block but only show when I call it with getChildHtml
和:Understanding Magento Block and Block Type
我了解 core / text_list 会自动打印内容,因此我将类型更改为“page / html_wrapper”。
问题是现在这两个元素的内容是重复的。一次是在top.phtml的内容之前,第二次是在调用getChildHtml时。
任何想法都会非常感激。