Jekyll导航配置:如何在多语言站点中排除指定页面
解决多语言网站导航仅显示特定页面的问题
我来帮你搞定这个问题!要让特定页面才出现在顶部导航,咱们只需要给目标页面加个自定义标识,再修改导航的筛选逻辑就行,具体操作如下:
1. 给需要显示在导航的页面添加标识
打开你想要展示在导航栏的页面(比如首页、关于页等),在页面顶部的Front Matter里添加nav: true属性,示例如下:
--- title: 首页 language: zh nav-order: 1 nav: true # 新增这个标识,标记该页面需要显示在导航 ---
不需要显示在导航的页面就不用加这个属性,默认不写就不会被筛选进导航栏。
2. 修改header.html的导航逻辑
把你原来的代码里的判断条件升级,加上对nav属性的检查,这样只有同时满足同语言和带有nav: true标识的页面才会被渲染到导航里。修改后的代码如下:
{% assign pages = site.pages | sort: "nav-order" %} {% for p in pages %} {% if p.language == page.language and p.nav == true %} <li><a class="tx--upper {% if p.url == page.url %}is-active{% endif %}" href="{{ p.url | prepend: site.baseurl }}">{{ p.title }}</a></li> {% endif %} {% endfor %}
逻辑说明:
- 保留了原有的
site.pages | sort: "nav-order"来按你设置的导航顺序排序页面 - 新增
p.nav == true的判断,只筛选出带有导航标识的页面 - 同时保留
p.language == page.language的多语言过滤,确保只显示当前语言的导航页面
这样修改后,只有你标记了nav: true的同语言页面才会出现在顶部导航栏啦!
内容的提问来源于stack exchange,提问作者rcho
相关产品推荐
相关产品推荐

