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

如何创建带自动计数功能的Jekyll Liquid tab标签插件?

Jekyll Tab标签实现文档内自动计数

要实现每个文档内独立的Tab序号计数,核心是利用Jekyll的**当前文档上下文(page变量)**存储计数器——每个页面在构建时独立处理,page变量可保存该页面专属的计数状态,无需额外维护实例数组。

完整插件代码(_plugins/tab_tag.rb)

# 预定义的caption哈希表
CAPTIONS = {
  diagram: "图表展示说明",
  config: "系统配置说明"
}.freeze

module Jekyll
  class TabTag < Liquid::Tag
    def initialize(tag_name, caption_key, tokens)
      super
      # 清理输入的键(去除空格并转为符号)
      @caption_key = caption_key.strip.to_sym
    end

    def render(context)
      # 获取当前页面的上下文对象
      page = context.registers[:page]
      
      # 初始化页面内的tab计数器,不存在则设为0
      page["tab_counter"] ||= 0
      # 计数器自增
      page["tab_counter"] += 1
      
      # 从哈希表获取对应caption文本,键不存在时用键名兜底
      caption_text = CAPTIONS.fetch(@caption_key, @caption_key.to_s)
      
      # 生成目标HTML结构
      "<p><b>Tab. #{page["tab_counter"]}.</b> #{caption_text}</p>"
    end
  end
end

# 注册Liquid标签
Liquid::Template.register_tag("tab", Jekyll::TabTag)

关键逻辑说明

  1. 文档专属计数:通过context.registers[:page]获取当前文档的page对象,在page上绑定tab_counter变量,确保每个文档的计数从1开始独立递增。
  2. 计数自增逻辑:每次渲染标签时,先检查计数器是否存在,不存在则初始化为0,随后自增1,保证序号严格按标签出现顺序生成。
  3. 哈希表取值处理:用fetch方法安全获取预定义的caption文本,同时提供默认值避免键不存在时抛出错误。

使用示例

在Markdown文件中写入:

{% tab diagram %}
{% tab config %}

构建后生成的HTML:

<p><b>Tab. 1.</b> 图表展示说明</p>
<p><b>Tab. 2.</b> 系统配置说明</p>

内容的提问来源于stack exchange,提问作者Рауль Каримов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:30:47