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

Liquid模板是否支持文档概念?Jekyll中如何定义文档级作用域Liquid变量?

关于Jekyll中Liquid文档作用域变量的问题

1. Liquid原生的"文档"概念

Liquid核心本身没有原生的"文档"概念——它本质是模板渲染引擎,变量作用域主要基于模板文件、渲染上下文(如页面、布局、包含片段)以及Jekyll扩展的对象(如page、site)。

2. 实现文档级作用域变量的可行性(单个文档含多页面)

在Jekyll框架下,完全可以实现类似"文档作用域"的变量,具体有几种实用方案:

方案一:用Front Matter定义文档级元数据

如果你的"文档"是指一组关联页面(比如同一系列的教程文章),给这组页面的Front Matter添加统一标识和共享变量:

---
title: 教程第一章
doc_id: tutorial_01
doc_shared_content: "这是整个教程共享的变量值"
---

在任意关联页面中,通过筛选site.pages匹配doc_id的页面,即可调用共享变量:

{% assign doc_pages = site.pages | where: "doc_id", "tutorial_01" %}
{% assign doc_shared = doc_pages[0].doc_shared_content %}
{{ doc_shared }}

方案二:用数据文件存储文档级变量

在_data目录下创建YAML/JSON文件(比如docs.yaml),定义文档的共享配置:

tutorial_01:
  shared_var: "教程共享内容"
  related_pages: ["tutorial-01.md", "tutorial-02.md"]

在页面中直接调用数据文件内容:

{{ site.data.docs.tutorial_01.shared_var }}

方案三:通过include片段传递文档级变量

如果文档的多页面基于同一模板片段构建,在include时直接传递文档级变量:

{% include doc_header.html doc_title="我的教程文档" doc_shared="共享值" %}

在doc_header.html中直接使用这些变量:

<h1>{{ doc_title }}</h1>
<p>{{ doc_shared }}</p>

3. 注意事项

  • 不存在全局自动绑定的"文档作用域",需要通过doc_id这类标识手动关联页面
  • Front Matter适合轻量级场景,数据文件方案更适配复杂文档结构
  • 所有变量的作用域最终依赖Jekyll的渲染上下文,Liquid本身不会自动识别"文档"分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:25:17