ZBlogCMS 如何添加自定义导航菜单

liulian
liulian 正式会员超兽战士
发布于 2026-10-07 14:18 ·0 浏览 ·0 回复

学完这篇,你能在 Z-BlogPHP(也就是常说的 ZBlogCMS)后台自己加、改、删顶部导航菜单,不依赖插件,也不用改核心代码。

Z-BlogPHP 的导航栏本质上是一个「模块」,后台把它当普通 HTML 片段存着,主题模板在渲染时再把它插到页面上。所以添加菜单这件事,九成情况就是在模块里补几行 <li>。

第一步:登录后台,找到「导航栏」模块

这一步的目标是打开导航栏模块的编辑框。用你的管理员账号登录 你的域名/zb_system/login.php,进后台后看左侧菜单,点「模块」(1.7.x 版本在左侧主菜单里,图标是一个方块)。页面会列出所有模块,每个模块左侧有类型标识,找到标识为 navbar、名称写着「导航栏」的那一条,点它右侧的「编辑」按钮。

注意:如果你用的是某些二次开发主题,导航栏可能被主题「接管」了,模块列表里找不到 navbar,或者编辑了不生效。这种情况直接跳到第五步改模板文件。

第二步:按 HTML 列表格式加菜单项

这一步的目标是写出一条能点的新菜单。编辑框里默认会有类似 <li><a href="{$host}">首页</a></li> 的内容,你只要在它后面另起一行,照着同样结构写:

<li><a href="{$host}about/">关于我们</a></li>
<li><a href="{$host}contact/">联系方式</a></li>

{$host} 是 Z-BlogPHP 的站点根地址标签,会替换成你当前的域名。写死 https://你的域名/ 也能用,但以后换域名就得一条条改,所以推荐用 {$host}。

注意:模块内容里只支持 {$host}、{$name} 这类站点信息标签,不支持 {foreach} 循环。想自动列出所有分类,得改模板文件,别在这里试。

第三步:外链、新窗口和二级菜单

这一步解决「点出去跳到别站」和「有下拉子菜单」两种需求。外链加 <a> 标签的 target 属性:

<li><a href="https://example.com" target="_blank" rel="noopener">友情链接</a></li>

二级菜单需要主题的 CSS 支持,通用写法是把子项嵌进父项的 <ul>:

<li class="menu-item-has-children">
  <a href="#">产品中心</a>
  <ul class="sub-menu">
    <li><a href="{$host}product/a/">产品 A</a></li>
    <li><a href="{$host}product/b/">产品 B</a></li>
  </ul>
</li>

注意:父级 <li> 上的 class 名(上面写的 menu-item-has-children)是主题约定的,不同主题差别很大,有的是 dropdown、有的是 has-sub。写错了不会报错,但鼠标悬停时下拉菜单不会弹出来。拿不准就右键看前台导航的 HTML,照抄主题自己的 class。

第四步:保存并清缓存

这一步让改动真正出现在前台。点编辑页底部「提交」按钮,然后回到后台首页,点右上角的「清空缓存并重新编译模板」。最后打开前台首页,按 Ctrl+F5 强制刷新一次。

注意:Z-BlogPHP 有模板缓存,只提交不清缓存,前台很可能还是旧导航,这是新手最常卡住的地方。

第五步:主题没输出导航栏模块时,改模板文件

这一步处理「模块改了但页面上压根没有导航」的情况。用 FTP 或主机文件管理器进入 zb_users/theme/你的主题名/template/,打开 header.php,搜索 {module:navbar} 或 {$modules['navbar']}。找不到就说明主题没调用模块,你需要在导航容器(通常是 <ul class="nav"> 之类)里手动加上 {module:navbar},保存后回后台清缓存。

如果你只是想临时加几条固定菜单,也可以跳过模块,直接在 header.php 里写死 <li> 列表,效果一样,只是以后改菜单得动文件。

小结

  • 导航菜单在后台「模块 → 导航栏(navbar)」里编辑,本质是 HTML 片段。
  • 每条菜单写成 <li><a href="...">名称</a></li>,链接优先用 {$host} 标签。
  • 外链加 target="_blank" rel="noopener";二级菜单的父子结构要配主题自己的 class。
  • 提交后必须「清空缓存并重新编译模板」,否则前台看不到变化。
  • 主题没调用模块时,在 header.php 里补 {module:navbar} 或直接写死列表。
  • 改模板前先备份 header.php,出问题能一键还原。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 如何添加自定义导航菜单》
原文链接:https://www.gj0.com/thread-337.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~