You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll菜单添加active类对_data文件夹配置项不生效问题

Jekyll 动态导航菜单项自动添加active类解决方案

问题根源

你写的判断条件里错误地在Liquid逻辑标签({% if %})内部使用了变量插值语法{{ }},Liquid不会解析放在{% %}里的{{ }},会把'{{nav.url}}'当成普通字符串匹配,自然无法触发正确的判断。

修正后的代码

直接在if条件中使用变量,不需要加{{ }}包裹即可:

<ul class="nav-menu">
  {% for nav in site.data.nav %}
  <li {% if page.url contains nav.url or page.path contains nav.path %}class="active" aria-current="page"{% endif %}>
    <a href="{{ nav.url }}">{{ nav.title }}</a>
  </li>
  {% endfor %}
</ul>

可选优化(避免短路径误匹配)

如果存在分类路径嵌套/相似的情况(比如有/category/name/和/category/name2/),可以给url判断加前缀匹配逻辑避免误触发:

<ul class="nav-menu">
  {% assign page_url = page.url | append: '/' | replace: '//', '/' %}
  {% for nav in site.data.nav %}
  {% assign nav_url = nav.url | append: '/' | replace: '//', '/' %}
  <li {% if page_url starts_with nav_url or page.path contains nav.path %}class="active" aria-current="page"{% endif %}>
    <a href="{{ nav.url }}">{{ nav.title }}</a>
  </li>
  {% endfor %}
</ul>

内容的提问来源于stack exchange,提问作者user11052504

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:24:07