在magento的topmenu 1.7不工作

时间:2013-01-15 05:49:25

标签: xml magento navigation menubar

我正在尝试在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导航。谁能告诉我我做错了什么?

1 个答案:

答案 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>

希望它有所帮助!