1

我创建了一个名为的 div nav_container,我希望将 Magento 产品类别放置在该 div 中,而不是默认标题中。

最简单的方法是什么?我研究了很长时间,没有解决方案。感谢您的任何建议。我正在使用 Magento 1.7。

4

1 回答 1

3

有几种方法可以实现这一点:

  1. 复制app/design/frontend/base/default/page/html/topmenu.phtmlapp/design/frontend/your_package/your_theme并简单地添加您的包装 div。

  2. 编辑app/design/frontend/your_package/your_theme/page/html/header并找到该行:<?php echo $this->getChildHtml('topMenu') ?>并简单地用你的 div 包围它

  3. 您也可以使用布局 xml,特别是page/html_wrapper块 - 但对于这个简单的示例,选项 1 或 2 很可能是最佳选项

编辑

意识到您对块的困惑后,请参阅下面的正确解决方案

好的,首先,块在 Magento 中具有非常特定的含义,与 html 标签的含义完全不同。您可以在此处找到块的定义:http: //www.magentocommerce.com/design_guide/articles/magento-design-terminologies4#term-blocks

现在,在 1.7 CE 中移动顶部导航:

与 Magento 中的布局一样,您有两个主要选择:将基本布局文件复制到当前主题并进行编辑,或者在主题中使用 local.xml 文件来覆盖所有基本布局。

每个都有优点和缺点 - 尽管我建议你使用 local.xml ,除非有特定的理由不这样做。但这完全取决于您选择哪种方法:)

1.使用local.xml

app/design/frontend/your_package/your_theme/layout/local.xml
<layout version="0.1.0">

    <!-- Other layout xml -->

    <!-- 
        Unset the nav from the header 
    -->
    <reference name="header">
        <action method="unsetChild"><alias>topMenu</alias></action>
    </reference>

    <!-- 
        Insert it into your new containing block
    -->
    <reference name="nav_container">
        <action method="insert"><alias>top.menu</alias></action>
    </reference>

    <!-- Other layout xml -->

</layout>

2. 复制基础文件

首先,复制app/design/frontend/base/default/layout/page.xmlapp/design/frontend/your_package/your_theme/layout/page.xml

找到 header 块,如果未触及,它将完全如下:

<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="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 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>

并更改为:

<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/html_wrapper" name="top.container" as="topContainer" translate="label">
        <label>Page Header</label>
        <action method="setElementClass"><value>top-container</value></action>
    </block>
</block>

此时,您只需从布局中删除 top.menu 块。

接下来,您需要将块重新添加到正确节点下的布局中:nav_container。

因此,无论您当前在何处声明 nav_container 块,都将您刚刚删除的 xml 添加为子节点,即:

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

最后清除缓存并重新加载页面。

于 2012-06-16T17:28:22.880 回答