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

如何遍历文章中的H1、H2标签生成导航栏

当然可以实现,以下是具体操作步骤

方法一:纯Liquid手动提取标题(无需额外插件)

这种方式完全依托Jekyll自带的Liquid语法实现,逻辑和你给出的minima遍历文章的思路一致。

  1. 创建目录片段文件
    在项目的_includes文件夹下新建post-toc.html文件,写入以下代码:
{% capture toc_content %}
  {% assign heading_chunks = page.content | split: '<h' %}
  <ul class="article-nav">
    {% for chunk in heading_chunks %}
      {% if chunk contains '1>' or chunk contains '2>' %}
        {% assign heading_level = chunk | slice: 0, 1 %}
        {% assign heading_text = chunk | split: '>' | shift | split: '</h' | first | strip_html %}
        {% assign heading_id = chunk | split: 'id="' | shift | split: '"' | first %}
        <!-- 若标题无自动生成ID,用标题文本转slug作为ID -->
        {% unless heading_id %}
          {% assign heading_id = heading_text | slugify %}
        {% endunless %}
        <li class="nav-item level-{{ heading_level }}">
          <a href="#{{ heading_id }}" 
             {% if page.url contains heading_id %}class="active"{% endif %}>
            {{ heading_text }}
          </a>
        </li>
      {% endif %}
    {% endfor %}
  </ul>
{% endcapture %}
{{ toc_content }}
  1. 在导航区域引入该片段
    找到需要放置标题导航的模板文件(比如文章模板_layouts/post.html的侧边栏/顶部导航区),添加代码:
{% include post-toc.html %}

方法二:使用Jekyll官方推荐的jekyll-toc插件(更简洁)

如果不想手动写Liquid逻辑,可借助官方维护的目录插件:

  1. 安装并配置插件
  • 在项目根目录的Gemfile中添加:
    gem 'jekyll-toc'
    
  • 在_config.yml中启用插件并设置参数:
    plugins:
      - jekyll-toc
    toc:
      min_level: 1  # 提取H1及以上
      max_level: 2  # 提取到H2为止
      list_class: 'article-nav'  # 自定义导航列表类名
    
  1. 在模板中插入目录
    直接在目标位置添加:
{% toc %}

若要给当前锚点对应的导航项加active类,可结合页面URL的锚点参数用Liquid判断:

{% capture toc %}
  {% toc %}
{% endcapture %}
{{ toc | replace: '<a href="#', '<a href="#' | replace: '">', '" {% if page.url contains "#' | append: '" %}class="active"{% endif %}>' }}

关键注意点

  • 确保标题有唯一ID:使用Jekyll默认的kramdown渲染器时,会自动给所有标题生成唯一ID,无需手动添加。
  • 动态切换active类:上述Liquid逻辑仅能判断页面URL中的锚点参数,若需滚动页面时自动切换active状态,可配合小段JavaScript实现(监听滚动事件,判断当前可见标题,给对应导航项加类)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:07:24