导航循环中:from=segment_1配置返回错误二级导航结果的问题
原提问
参照相关教程构建站点导航时出现异常:
站点树结构为根目录下包含musicians、projects等顶级页面,首页为默认根页面。
使用的二级导航实现代码:
{{ nav:collection:pages :from="segment_1" }} {{ if ! no_results}} <li><a href="{{ url }}">{{ title }}</a></li> {{ /if }} {{ /nav:collection:pages }}
问题现象:访问首页时,二级导航仍展示musicians、projects两个条目。按逻辑首页无URL分段,segment_1为空,不应输出任何二级导航内容,需排查配置问题。
解答
问题根因
异常由Statamic导航标签对空from参数的默认处理逻辑导致:
- 首页访问时URL无路径分段,
segment_1变量值为空 - 当给
:from传入空值时,nav:collection标签会忽略该空参数,默认拉取站点根目录下的所有顶级子页面,恰好对应musicians、projects条目 - 此时标签返回有效结果,
no_results判断为false,条目被正常渲染
修复方案
在导航标签外层增加URL分段存在性判断,仅当segment_1有值时才渲染二级导航,避免空参数触发默认行为:
{{ if segment_1 }} {{ nav:collection:pages :from="segment_1" }} {{ if ! no_results }} <li><a href="{{ url }}">{{ title }}</a></li> {{ /if }} {{ /nav:collection:pages }} {{ /if }}
如需更细粒度的控制,也可在segment_1为空时传入一个不存在的页面ID作为from参数,但外层判断的方案更符合站点导航的常规实现逻辑。
内容的提问来源于stack exchange,提问作者Mista K.
相关产品推荐
相关产品推荐

