最后更新时间:2026-09-22 19:06:14
这一点值得先说清楚,能省掉很多翻代码的时间:VVCMS 目前没有提供统一的「当前栏目」字段或结构化的面包屑列表。导航数据是一份平铺的栏目列表,模板需要自己判断哪一项是激活态。
同时,栏目树并没有结构化地暴露给模板——早期曾有 ColumnsTree 可以一次拿到整棵树,但它已经因为安全收敛被移除(避免把未启用、隐藏或内部栏目泄漏到前台)。
虽然不给整棵树,但提供了按关系取栏目的一组函数,按需组合即可:
| 需求 | 用什么 |
|---|---|
| 顶部导航(一级栏目) | 导航数据里的栏目列表,直接 range 输出 |
| 子栏目 / 侧边栏 | ChildrenColumns 传父栏目 slug |
| 当前栏目的父级 | ParentColumn 传栏目 ID |
| 同级栏目 | SiblingColumns 传栏目 ID |
| 按标识取单个栏目 | Column 传 slug,或 ColumnByID 传 ID |
既然没有 active 字段,就在模板里比较当前页面的栏目标识与循环项的栏目标识。思路是:
要点:
ParentColumn 往上找一层再比较,否则详情页打开时导航没有任何一项高亮。同样没有现成的 Trail,需要自底向上拼:
ParentColumn 逐级往上取父栏目,直到取不到为止(到达一级)。Reverse 函数,直接对切片调用即可。ParentColumn 都是一次查询,模板里写死五级往上找,在列表页会被放大成大量查询。控制在两三级比较稳妥。