Liquid 变量 Variables | Jekyll 全局变量 站点变量 页面变量 主题变量

Jekyll 会遍历你的项目文件(网站),寻找需要处理的文件。凡是包含页面头部参数(front matter)的文件都会被处理。对于这些文件,Jekyll 基于 Liquid 模板引擎提供一系列变量供你使用。以下是可用变量的参考。

全局变量 Global Variables

Variable Description

site

整个站点的信息和配置,取自 _config.yml 文件。具体信息详见下文。

page

当前页面的具体信息,包含页面头部参数 front matter。通过前置元数据自定义的变量也可以在这里获取。详见下文。

layout

布局文件的具体信息,包含页面头部参数 front matter。在布局文件中设置的自定义变量可以通过此处获取。

theme

主题 gem 定义的相关信息,如主题的 gemspec 文件中指定的内容。常用于主题展示页的“关于”页面、社交链接等。详见下文。

content

在布局文件中,表示正在被包装的文章或页面的渲染内容。不在文章或页面文件中定义。

paginator

当配置文件中设置了 paginate 选项时,这个变量才会生效。详见分页文档。

站点变量 Site Variables

Variable Description

site.time

当前运行 jekyll 命令时的时间。

site.pages

所有页面的列表。

site.posts

所有文章的列表,按时间倒序排列。

site.related_posts

如果当前处理的页面是文章(post),最多可获取十篇相关文章的列表。默认情况下,这些是最近的十篇文章。为了更高质量但计算较慢的结果,可以使用 --lsi潜在语义索引)选项运行 jekyll。注意,GitHub Pages 不支持 lsi 选项。

site.static_files

所有静态文件的列表(即未经过 Jekyll 转换器或 Liquid 渲染的文件)。每个文件有五个属性:path(路径)、modified_time(修改时间)、name(文件名)、basename(基本名称)和 extname(扩展名)。

site.html_pages

site.pages 的子集,列出以 .html 结尾的页面。

site.html_files

site.static_files 的子集,列出以 .html 结尾的静态文件。

site.collections

所有集合(包括文章)的列表。

site.data

_data 目录中加载数据文件,例如 YAML 文件。

site.documents

所有集合中所有文档的列表。

site.categories.CATEGORY

类别 CATEGORY 中的所有文章列表。

site.tags.TAG

带有标签 TAG 的所有文章列表。

site.url

站点的 URL,取自 _config.yml 文件的配置。例如,如果配置文件中写了 url: http://mysite.com,那么在 Liquid 中可以通过 site.url 获取。如果是在开发环境下使用 jekyll serve,会有例外,在开发环境中,site.url 将设置为 hostport 和 SSL 相关选项的值,默认为 url: http://localhost:4000

site.[CONFIGURATION_DATA]

通过命令行和 _config.yml 设置的所有变量都可以通过 site 变量获取。例如,如果配置文件中有 foo: bar,那么在 Liquid 中可以通过 site.foo 获取。在 watch 模式下 Jekyll 不会解析 _config.yml 的变更,你需要重启 Jekyll 才能看到变量的变更。

页面变量 Page Variables

Variable Description

page.content

页面的内容。是否被渲染取决于 Liquid 模板的处理情况以及page的类型。

page.title

页面标题。

page.excerpt

未渲染过的文档摘要。

page.url

文章的 URL,不带域名,但前面带斜杠,例如 /2008/12/14/my-post.html

page.date

文章的发布日期。可以在 Front Matter 中手动设置, 格式为 YYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS +/-TTTT(设置时区,例如 2008-12-14 10:30:00 +0900)。

page.id

Collection 或 Post 中文章的唯一标识符(在RSS提要中很有用)。比如: /2008/12/14/my-post/my-collection/my-document

page.categories

文章所属的分类列表。如果文章URL使用分类则分类的改变会影响文章的URL。来源于 _posts 目录的上层目录结构。 比如 /work/code/_posts/2008-12-24-closures.md 这个路径的文章, 分类列表就是 ['work', 'code']。也可以在 Front Matter 中手动设置分类。

page.collection

当前文档所属的集合标签。比如 posts 代表文章, puppies 代表路径为 _puppies/rover.md 的文档。 如果不属于任何集合,则返回空字符串。

page.tags

文章的标签列表。可以在Front Matter中设置标签。

page.dir

文章或页面文件的所在路径,比如 /pages/。 可以在Front Matter中用 permalink 进行覆盖。

page.name

文章或页面的文件名,比如 about.md

page.path

文章或页面的原始文件路径。也可以用来链接到 GitHub 上的源文件。 该值也可以在Front Matter中覆盖。

page.next

当前文章在 site.posts 列表中的下一篇文章。 如果当前文章是最后一篇,返回 nil

page.previous

当前文章在 site.posts 列表中的上一篇文章。 如果当前文章是第一篇,返回 nil

ProTip™: 使用自定义 Front Matter

任何在 front matter 中指定的自定义参数都会通过 page 变量来访问。例如,如果你在页面的 front matter 中指定 custom_css: true,那么该值可以通过 page.custom_css 来获取。

如果你在布局文件中指定了 front matter,你可以通过 layout 来访问。例如,在布局的 front matter 中指定 class: full_page,那么该值可以通过 layout.class 来获取。

主题变量 Theme Variables4.3.0

Variable Description

theme.root

主题的绝对路径。

theme.authors

主题的作者,多个作者的写法: ["作者A", "作者B"]

theme.description

主题的描述或摘要

theme.version

当前主题的版本字符串

theme.dependencies

主题的运行时依赖列表

theme.metadata

主题 gemspec 中定义的键值对映射。

分页器 Paginator

分页器也就是我们常说的「分页」、「页码」或「分页导航」。

Variable Description

paginator.page

当前页码

paginator.per_page

每页的文章数量

paginator.posts

当前页面的文章

paginator.total_posts

文章总数

paginator.total_pages

总页数

paginator.previous_page

上一页的页码,如果没有上一页,则为 nil

paginator.previous_page_path

上一页的路径,如果没有上一页,则为 nil

paginator.next_page

下一页的页码,如果没有下一页,则为 nil

paginator.next_page_path

下一页的路径,如果没有下一页,则为 nil

分页器变量的适用范围

这些变量仅在索引文件中可用,不过它们可以位于子目录中,例如 /blog/index.html