在织梦CMS中,main header 通常指的是网站页面的主导航栏部分,它位于网站的最顶部,是整个网站最重要的导航结构,承载着引导用户访问核心内容栏目的重任。

(图片来源网络,侵删)
下面我将从结构、代码、自定义方法三个方面进行详细说明。
结构与作用
一个典型的 main header(主导航栏)通常包含以下元素:
- Logo: 网站的标志,通常链接到网站首页。
- 主导航菜单: 由网站的核心栏目组成的列表,首页”、“关于我们”、“产品中心”、“新闻中心”、“联系我们”等。
- 辅助功能区: 可能包含搜索框、用户登录/注册链接、语言切换、联系方式等。
在织梦CMS中,主导航栏的数据和结构主要是由 栏目管理 功能驱动的。
核心代码位置与解析
织梦CMS的模板文件是 .htm 格式,主导航栏的代码通常位于模板的 head.htm 文件中,或者在 index.htm (首页模板) 的 <header> 标签内。

(图片来源网络,侵删)
A. 调用主导航栏的核心标签
织梦使用一个核心的 channel 标签来循环输出顶级栏目,构建主导航菜单。
最常用的代码格式如下:
{dede:channel type='top' row='8'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
代码详解:
-
{dede:channel type='top' row='8'} ... {/dede:channel}
(图片来源网络,侵删)- 这是一个循环标签,用于查询和输出栏目。
type='top': 关键参数,表示只调用顶级栏目,这正是我们构建主导航栏所需要的。row='8': 表示输出的栏目数量,这里限制为8个,你可以根据你的网站栏目数量进行修改,或者删除此属性以输出所有顶级栏目。
-
<li><a href="[field:typelink/]">[field:typename/]</a></li>- 这是循环体内的单条栏目代码。
<li>: 列表项标签,用于构建无序列表,是导航栏的标准结构。<a href="[field:typelink/]">...</a>: 超链接标签。[field:typelink/]: 这是字段标签,它会自动输出当前栏目的完整链接地址(https://www.yoursite.com/about/)。
[field:typename/]: 这也是字段标签,它会输出当前栏目的名称(关于我们”)。
B. 完整的 main header 示例
下面是一个更完整的 header 区域代码示例,包含了Logo和主导航。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">{dede:global.cfg_webname/}</title>
<!-- 其他head标签... -->
</head>
<body>
<!-- 这就是 main header 部分 -->
<header class="main-header">
<div class="container">
<!-- Logo部分 -->
<div class="logo">
<a href="{dede:global.cfg_cmsurl/}/">
<img src="{dede:global.cfg_templets_skin/}/images/logo.png" alt="{dede:global.cfg_webname/}">
</a>
</div>
<!-- 导航菜单部分 -->
<nav class="main-nav">
<ul>
<!-- 使用channel标签调用顶级栏目 -->
{dede:channel type='top' row='10'}
<li><a href="[field:typelink/]" title="[field:typename/]">[field:typename/]</a></li>
{/dede:channel}
<!-- 可以手动添加外部链接 -->
<li><a href="http://www.dedecms.com" target="_blank">织梦论坛</a></li>
</ul>
</nav>
</div>
</header>
<main>
<!-- 页面其他内容... -->
</main>
</body>
</html>
代码补充说明:
{dede:global.cfg_cmsurl/}: 输出网站根目录URL。{dede:global.cfg_templets_skin/}: 输出当前模板的目录路径。{dede:global.cfg_webname/}: 输出网站后台设置的网站名称。class="main-header",class="container",class="main-nav": 这些是CSS类名,用于后续的样式美化,与织梦功能无关,但至关重要。
如何自定义和修改 main header
修改主导航栏主要涉及两个步骤:后台设置 和 前端代码调整。
在后台管理栏目
- 登录织梦CMS后台。
- 菜单栏点击 【核心】 -> 【栏目管理】。
- 你可以看到所有栏目的层级结构。
- 添加/删除栏目:直接在列表中操作即可,新增的顶级栏目会自动在前端导航栏中显示(前提是你的模板代码没有限制
row数量)。 - 修改栏目名称和排序:点击栏目名称进行编辑。排序号决定了它们在导航栏中的显示顺序,数字越小越靠前。
- 设置外部链接:如果某个栏目需要指向一个外部网站(如织梦官网),可以在编辑栏目时,将“选择目标栏目”改为“自定义文件名”,然后在输入框中填入完整的URL,
http://www.dedecms.com。
- 添加/删除栏目:直接在列表中操作即可,新增的顶级栏目会自动在前端导航栏中显示(前提是你的模板代码没有限制
修改模板文件
如果默认的 channel 标签不能满足你的需求(你想添加当前栏目高亮、下拉菜单等),你需要修改模板文件。
- 通过FTP或主机文件管理器,进入你的网站模板目录。
- 路径通常为:
/templets/你的模板文件夹名/
- 路径通常为:
- 找到
head.htm或index.htm文件。 - 使用代码编辑器打开它,找到
{dede:channel}相关的代码进行修改。
常见高级修改示例:
示例1:为当前栏目所在的 <li> 添加高亮样式
{dede:channel type='top' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
currentstyle:channel标签的特殊属性,用于匹配当前页面所在的栏目。~typelink~和~typename~是currentstyle属性中的特殊占位符,分别代表栏目链接和名称。- 当访问某个栏目页面时,该栏目对应的
<li>就会自动带上class="active"样式,方便你用CSS写高亮效果。
示例2:实现二级下拉菜单
这需要更复杂的嵌套 channel 标签和CSS/JS配合,基本思路是:
- 外层循环顶级栏目。
- 内层循环判断当前顶级栏目下是否有子栏目,如果有,则再嵌套一个
channel标签调用其子栏目。 - 用CSS控制子栏目的显示与隐藏(
hover时显示)。
{dede:channel type='top'}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
<!-- 判断是否有子栏目 -->
[field:sonlist]
<ul class="sub-nav">
{dede:channel type='son' noself='yes'}
<li><a href="[field:typelink/]">[field:typename/]</a></li>
{/dede:channel}
</ul>
[/field:sonlist]
</li>
{/dede:channel}
[field:sonlist]...[/field:sonlist]: 这是一个字段判断标签,如果当前栏目有子栏目,则执行其中的内容。{dede:channel type='son'}用于调用子栏目。
织梦CMS的 main header 本质上是一个由 后台栏目数据 驱动的 前端模板代码。
- 核心:
{dede:channel type='top'}标签是调用主导航栏的根本。 - 数据源:后台的 【栏目管理】 是修改导航栏内容和顺序的地方。
- 自定义:通过修改模板文件中的HTML结构和配合CSS/JS,可以实现各种复杂的导航效果,如高亮、下拉菜单等。
理解这三者的关系,你就能灵活地控制织梦CMS的网站主导航栏了。
