0

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

4

1 回答 1

0

<?php echo $this->getChildHtml('topMenu') ?>在 page/html/header.phtml 中调用您的 header.phtml 是因为:

应用程序/代码/法师/页面/块/Html/Header.php

第 38 行:

$this->setTemplate('page/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>

希望能帮助到你 !

于 2013-01-22T21:07:53.690 回答