header.htm 是织梦模板系统中的头部模板文件,它定义了网站每个页面顶部区域的公共结构,通常包括:

(图片来源网络,侵删)
- 网站Logo
- 主导航菜单
- 顶部搜索框
- 用户登录/注册区域
- 购物车、收藏夹等链接(如果网站有这些功能)
由于其公共性,header.htm 会在其他所有模板文件(如 index.htm, list.htm, article_article.htm 等)中被 {dede:include filename='header.htm' /} 标签调用,以实现代码复用和统一管理。
一个典型的 header.htm 代码示例
下面是一个功能相对完整的 header.htm 代码,包含了Logo、主导航、搜索和用户区域,我会逐行进行注释解释。
<!DOCTYPE html>
<html lang="{dede:global.cfg_lang/}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">{dede:global.cfg_webname/} - {dede:field.title/}</title>
<meta name="keywords" content="{dede:field name='keywords'/}">
<meta name="description" content="{dede:field name='description' function='html2text(@me)'/}">
<!-- 引入CSS文件,通常放在这里 -->
<link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/css/style.css">
<!-- 其他CSS或JS文件 -->
</head>
<body>
<!-- 顶部通栏 -->
<div class="topbar">
<div class="container">
<div class="topbar-left">
<span>欢迎来到 <strong>{dede:global.cfg_webname/}</strong></span>
</div>
<div class="topbar-right">
<!-- 如果用户已登录,显示用户名和退出 -->
{dede:if get='islogin'}
<span>欢迎您,<strong>{dede:global name='cfg_ml_username'/}</strong>!</span>
<a href="{dede:global name='cfg_memberurl'/}/index_do.php?fmdo=login&dopost=exit&key={dede:global name='cfg_md5_loginhash'/}">退出</a>
<!-- 否则,显示登录和注册链接 -->
{else}
<a href="{dede:global name='cfg_memberurl'/}/login.php">登录</a>
<a href="{dede:global name='cfg_memberurl'/}/reg.php">注册</a>
{/dede:if}
</div>
</div>
</div>
<!-- 网站头部主体 -->
<header class="main-header">
<div class="container">
<!-- Logo区域 -->
<div class="logo">
<!-- 如果网站配置了Logo图片,则显示图片 -->
{dede:global name='cfg_cmspath'/}/images/{dede:global name='cfg_weblogo'/}" alt="{dede:global.cfg_webname/}" />
<!-- 如果没有配置Logo图片,则显示网站名称作为文字Logo -->
<a href="/" title="{dede:global.cfg_webname/}">{dede:global.cfg_webname/}</a>
{/dede:if}
</div>
<!-- 主导航菜单 -->
<nav class="main-nav">
<ul>
<!-- 调用顶级栏目列表 -->
{dede:channel type='top' row='8' currentstyle="
<li class='active'><a href='~typelink~' ~rel~><span>~typename~</span></a></li>
"}
<li><a href="[field:typelink/]" title="[field:typename/]"><span>[field:typename/]</span></a></li>
{/dede:channel}
</ul>
</nav>
<!-- 搜索框 -->
<div class="search-box">
<form name="formsearch" action="{dede:global name='cfg_phpurl'/}/search.php">
<input type="hidden" name="kwtype" value="0" />
<input type="hidden" name="searchtype" id="searchtype" value="titlekeyword" />
<input type="text" name="q" class="search-input" placeholder="请输入关键词...">
<button type="submit" class="search-btn">搜索</button>
</form>
</div>
</div>
</header>
<!-- 用于放置内容页面的主内容区,通常在header之后 -->
<div class="main-content">
{dede:include filename='body.htm'/} <!-- 这行通常不在header.htm里,是为了展示结构 -->
</div>
<!-- 页脚 -->
<footer>
{dede:include filename='footer.htm'/}
</footer>
</body>
</html>
代码核心标签详解
header.htm 的核心在于使用织梦的各种内置标签来动态获取数据。
网站全局配置标签
这些标签用于获取在织梦后台“系统” -> “系统基本参数”中设置的信息。

(图片来源网络,侵删)
{dede:global.cfg_webname/}: 网站名称。{dede:global.cfg_templets_skin/}: 当前模板的目录路径。/templets/default。{dede:global.cfg_memberurl/}: 会员中心的路径。{dede:global.cfg_cmspath/}: 网站根目录。{dede:global.cfg_weblogo/}: 网站Logo的文件名(如logo.png)。{dede:global.cfg_lang/}: 网站语言。
栏目标签 ({dede:channel})
这是 header.htm 中最重要的标签之一,用于生成主导航菜单。
-
{dede:channel type='top' row='8' currentstyle='...'}:type='top': 指定只调用顶级栏目,这是制作主导航最关键的属性。row='8': 调用8个顶级栏目。currentstyle='...': 当前页面对应的栏目样式。~typelink~会被替换为栏目链接,~typename~会被替换为栏目名称,~rel~会被替换为rel="self",这个属性是实现“高亮当前导航”的关键。
-
[field:typelink/]和[field:typename/]: 在{dede:channel}循环内部使用的字段,分别代表栏目的链接和名称。
用户登录状态判断标签 ({dede:if})
用于判断用户是否已登录,并显示不同的内容。

(图片来源网络,侵删)
{dede:if get='islogin'}: 判断当前用户是否已登录。{dede:global name='cfg_ml_username'/}: 获取当前登录用户的用户名。{dede:global name='cfg_md5_loginhash'/}: 获取用于安全退出的MD5哈希值。
搜索表单
header.htm 中的搜索框通常指向 /search.php。
action="{dede:global name='cfg_phpurl'/}/search.php": 指定搜索表单提交的地址。<input name="q">: 用户输入的关键词。<input name="kwtype" value="0">: 搜索类型,0表示关键词搜索。<input name="searchtype" value="titlekeyword">: 搜索范围,titlekeyword表示在标题和关键词中搜索。
当前页面信息标签
这些标签通常用在 <head> 部分,用于动态设置每个页面的 <title> 和 <meta> 信息。
{dede:field.title/}: 当前页面的标题(如文章标题、栏目名称)。{dede:field.name='keywords'/}: 当前页面的关键词。{dede:field.name='description' function='html2text(@me)'/}: 当前页面的描述,这里使用了function属性,调用了html2text函数,用于将可能包含HTML的描述文本转换为纯文本。
如何自定义你的 header.htm
-
修改Logo:
- 上传你的Logo图片到
/templets/你的模板目录/images/目录下。 - 进入织梦后台“系统” -> “系统基本参数” -> “核心设置”,找到“网站Logo文件”一项,填入你的Logo文件名(如
my-logo.png)。 - 修改
<img>标签的src属性或<a>标签的文本内容以符合你的设计。
- 上传你的Logo图片到
-
修改主导航:
- 修改
{dede:channel}的row值来增减导航项数量。 - 修改
<ul>和<li>的CSS类名(如.main-nav ul li)来调整样式。 - 修改
currentstyle的值来改变高亮效果,例如改为<li class='current'><a href='~typelink~'>~typename~</a></li>。
- 修改
-
修改搜索框样式:
- 修改
.search-box,.search-input,.search-btn等CSS选择器来改变搜索框的外观。
- 修改
-
增减顶部链接:
- 直接在
.topbar-right的div中添加或删除<a>标签即可,可以添加一个“设为首页”的链接:<a href="javascript:void(0)" onclick="homed()">设为首页</a>,并在JS文件中编写homed()函数。
- 直接在
注意事项
- 路径问题: 使用
{dede:global.cfg_templets_skin/}是最稳妥的调用CSS、JS等资源的方式,它能自动定位到当前模板目录。 - SEO:
<title>和<meta>标签的正确使用对SEO至关重要,确保{dede:field.title/}等标签被正确放置。 - 响应式设计: 在编写
header.htm时,应考虑在不同设备(PC、平板、手机)上的显示效果,通常会用CSS媒体查询(@media)来控制导航在小屏幕下如何收起或变为菜单图标。
希望这份详细的解析能帮助你完全理解和使用织梦的 header.htm 文件!
