我正在尝试在Magento中创建一个新模板,而不是使用剪切和粘贴空白模板并编辑css以适合我的布局。我想添加一个类别和页面的topMenu作为我的主导航。我按照我在互联网上找到的说明进行操作,菜单在任何情况下都没有显示。
我的page.xml中的代码是topMenu的代码
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
</block>
我头文件中的代码是
<div id="utilities">
<?php echo $this->getChildHtml('topMenu') ?>
</div>
topmenu.phtml位于我主题的/ page / html /文件夹中,我清除了我的缓存并重新编制索引。没有显示。
奇怪的是,我将代码设置为默认时复制了代码,它实际上显示了带有我的类别和页面的topMenu导航。谁能告诉我我做错了什么?
答案 0 :(得分:0)
您正在调用page / html / header.phtml中的<?php echo $this->getChildHtml('topMenu') ?>
你的header.phtml是因为:
App / Code / Mage / Page / Block / Html / Header.php
第38行:
$这 - &GT; setTemplate(页面/ HTML / header.phtml');
您正在尝试将topMenu块作为此标头块的子级。这意味着您必须在page.xml中添加该块作为标题块的子块。
<block type="page/html_header" name="header" as="header">
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
</block>
</block>
为了确保在所有页面上调用它(如果没有被覆盖),你必须将它放在默认句柄中。
所以看起来像这样:
<default translate="label" module="page">
<block type="page/html_header" name="header" as="header">
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml" />
</block>
</block>
</default>
您还可以通过将头文件更改为:
来更改头文件的模板<block type="page/html_header" name="header" as="header" template="page/html/custom_header.phtml">
</block>
希望它有所帮助!