ZBlogCMS 能不能实现栏目二级分类

chinaz
chinaz 正式会员超兽战士
发布于 2026-10-07 17:54 ·0 浏览 ·0 回复

学完这篇,你能搞清楚 Z-BlogPHP 到底支不支持栏目二级分类,以及在不换程序的前提下,用哪两条路把二级分类真正跑起来。

第一步:先确认你的版本,别在错的前提上折腾

这一步要做的是确认你手里这套系统的版本号,因为不同版本的分类结构不一样,结论直接决定后面走哪条路。

登录后台,看左侧菜单最下方的「Z-BlogPHP」图标,或者首页右上角,会显示类似 Z-BlogPHP 1.7.3 的版本号。

结论先给出来:截至 Z-BlogPHP 1.7.3,原生分类只有一层,没有父子关系。数据库里分类存在 zbp_category 表,字段只有 cate_ID、cate_Name、cate_Alias、cate_Order 这些,没有 parent_ID 字段。所以后台「分类管理」里新建分类时,是找不到「上级分类」下拉框的——不是你没找到,是压根没有。

注意:如果你看到别人的站有二级分类,大概率是装了插件,或者主题作者在模板层做了伪层级,不是原生功能。

第二步:方案 A——装插件,这是最接近「真二级分类」的做法

这一步的目标是让后台出现「上级分类」选项,并且前台能自动按层级输出。

操作路径:后台 → 左侧「应用中心」→ 顶部切换到「插件」标签 → 搜索框输入「多级分类」或「二级分类」→ 在结果列表里重点看「适用版本」列是否包含 1.7.x。

找到合适的插件后,点该条目右侧的「安装」按钮,安装完回到左侧「插件管理」,找到它并点「启用」。

启用成功后,回到「分类管理」,点「新建分类」,表单里会多出一个「上级分类」下拉框,选好父分类保存即可。

注意:装插件前先在「数据库管理」里做一次备份,或者用 phpMyAdmin 导出 zbp_category 表。插件升级或卸载时,分类层级数据有可能被清掉。

注意:插件装了不代表前台就好了。分类页的伪静态地址需要重写,见第四步。

第三步:方案 B——不装插件,用分类别名模拟两级

如果你的分类数量不多、又不想引入插件,可以用「别名前缀法」实现视觉上的二级分类。

这一步要做的是给分类别名定规则:父分类用短词,子分类统一加父分类前缀加短横线。比如父分类别名 news,子分类就是 news-company、news-industry。

在后台「分类管理」逐个编辑分类,把「别名」一栏按上述规则改好,保存。

然后在主题模板的侧栏或导航文件(通常是 template/default/sidebar.php 或主题同名文件)里写判断逻辑:

{foreach $zbp->GetCategoryList() as $c}
  {if strpos($c->Alias, '-') === false}
    <li><a href="{$c->Url}">{$c->Name}</a>
      {foreach $zbp->GetCategoryList() as $s}
        {if strpos($s->Alias, $c->Alias . '-') === 0}
          <a href="{$s->Url}">{$s->Name}</a>
        {/if}
      {/foreach}
    </li>
  {/if}
{/foreach}

保存后在后台「首页」右上角点「清空缓存并重新编译模板」,再刷新前台就能看到两级缩进效果。

注意:这只是渲染层的层级,后台文章编辑页的分类勾选框依然是一堆平铺的分类,不会真的折叠。投稿人给文章选分类时要靠命名去区分。

第四步:伪静态一定要跟着配,否则链接会打回 category/id 形式

这一步保证二级分类的 URL 好看且不报 404。

后台 → 左侧「设置」→「伪静态管理」,在分类页的重写规则里,把 {%host%}category/{%id%}.html 改成基于别名的形式,比如 {%host%}{%alias%}/。改完点页面下方的「保存」,再回「首页」清一次缓存。

改完后访问 你的域名/news-company/,如果能正常打开分类页,说明别名和规则对上了。如果 404,先检查别名是否和已有别名重复,再检查服务器(Nginx/Apache)是否已按后台提示写入了重写规则。

注意:用方案 A 的插件时,子分类地址通常是 父别名/子别名/ 这种两段式,插件会自动改重写规则;一旦禁用插件,这些地址会全部失效,做 SEO 前想清楚。

小结

  • Z-BlogPHP 1.7.3 原生分类只有一级,zbp_category 表没有 parent_ID,这是硬结论。
  • 真二级分类靠「应用中心 → 插件」里的多级分类插件,装完后台才会出现「上级分类」下拉框。
  • 不想装插件就用「别名前缀法」加模板 strpos 判断,只影响前台展示。
  • 两条路都要动「设置 → 伪静态管理」里的分类页规则,改完记得清缓存。
  • 装插件前先备份 zbp_category 表,别拿生产站当试验田。
版权声明:本文来自 GJ站长论坛《ZBlogCMS 能不能实现栏目二级分类》
原文链接:https://www.gj0.com/thread-452.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~