Front Matter

任何只要包含 YAML 头信息的文件在Jekyll中都能被当做一个特殊的文件来处理。头信息必须在文件的开始部分,并且需要按照 YAML 的格式写在两行三虚线之间。下面是一个基本的例子:

---
layout: post
title: Blogging Like a Hacker
---

在这两行的三虚线之间,你可以设置预定义的变量(下面这个例子可以作为参考),甚至创建一个你自己定义的变量。这样在接下来的文件和任意模板中或者在包含这些页面或博客的模板中都可以通过使用 Liquid 标签来访问这些变量。

UTF-8 编码方式警告

如果你使用 UTF-8 编码,那么在你的文件中一定不要出现 BOM 头字符,否则你会碰上非常糟糕的事情,尤其当你在Windows上使用Jekyll的时候。

提示™:头信息变量是可选的

如果你想使用Liquid标签和变量但在头信息中又不需要任何定义,那你就让头信息空着!在头信息为空的情况下,Jekyll 仍然能够处理文件。(这对于一些像 CSS 和 RSS 的文件非常有用)

预定义的全局变量

你可以在页面或者博客的头信息里设置这些已经预定义好的全局变量。

变量 说明

layout

如果设置的话,会指定使用该模板文件。指定模板文件时候不需要文件扩展名。模板文件必须放在 \_layouts 目录下

  • Using null will produce a file without using a layout file. This is overridden if the file is a post/document and has a layout defined in the front matter defaults.
  • Starting from version 3.5.0, using none in a post/document will produce a file without using a layout file regardless of front matter defaults. Using none in a page will cause Jekyll to attempt to use a layout named "none".

permalink

如果你需要让你发布的博客的 URL 地址不同于默认值 /year/month/day/title.html,那你就设置这个变量,然后变量值就会作为最终的 URL 地址。

published

如果你不想在站点生成后展示某篇特定的博文,那么就设置(该博文的)该变量为 false

Render Posts Marked As Unpublished

To preview unpublished pages, run `jekyll serve` or `jekyll build` with the `--unpublished` switch. Jekyll also has a handy drafts feature tailored specifically for blog posts.

自定义变量

You can also set your own front matter variables you can access in Liquid. For instance, if you set a variable called food, you can use that in your page:

---
food: Pizza
---

<h1>{{ page.food }}</h1>

Posts中预定义的变量

在文章中可以使用这些在头信息变量列表中未包含的变量。

变量 说明

date

这里的日期会覆盖文章名字中的日期。这样就可以用来保障文章排序的正确。日期的具体格式为YYYY-MM-DD HH:MM:SS +/-TTTT;时,分,秒和时区都是可选的。

category

categories

除过将博客文章放在某个文件夹下面外,你还可以指定博客的一个或者多个分类属性。这样当你的站点生成后,这些文章就可以根据这些分类来阅读。categories 可以通过 YAML list,或者以逗号隔开的字符串指定。

tags

类似分类 categories,一篇文章也可以给它增加一个或者多个标签。同样,tags 可以通过 YAML列表或者以逗号隔开的字符串指定。

提示™: 不要重复

如果你不想重复设置你常用的头信息变量,只需为它们定义默认值,仅在必要的时候(或者从不)覆盖它们即可。这种方式对预定义变量和自定义变量都有效。