我创建了一个名为的 div nav_container
,我希望将 Magento 产品类别放置在该 div 中,而不是默认标题中。
最简单的方法是什么?我研究了很长时间,没有解决方案。感谢您的任何建议。我正在使用 Magento 1.7。
有几种方法可以实现这一点:
复制app/design/frontend/base/default/page/html/topmenu.phtml
到app/design/frontend/your_package/your_theme
并简单地添加您的包装 div。
编辑app/design/frontend/your_package/your_theme/page/html/header
并找到该行:<?php echo $this->getChildHtml('topMenu') ?>
并简单地用你的 div 包围它
您也可以使用布局 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.xml
到app/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>
最后清除缓存并重新加载页面。