原文来自: Template Data API

 本文结构:
  1.  Post/Page 参数
  2.  Content参数
  3.  Site参数
  4.  分类
  5.  标签

Post/Page参数

Jekyll 处理的内容文件要么是一个post页面,要么是一个page页面。在这两种情况下,通过page变量,可以访问该实例(通过模板渲染出的页面/文章)的内容。page变量是一个全局变量,可以在所有的模板、post页、page页、以及通过模板渲染出的post/page实例中被访问。

以下的格式代表了Jekyll::Post对象 和 Jekyll::Page对象。当你希望使用如下格式时,这两个对象可以嵌套在其他变量里。

1
2
3
4
5
6
7
8
9
10
11
12
13
page = {
 "layout"=>"post",
 "categories"=>["lessons"],
 "title"=>"Jekyll Liquid Api",
 "url"=>"/lessons/jekyll-liquid-api.html",
 "date"=>2011-01-27 00:00:00 -0800,
 "id"=>"/lessons/jekyll-liquid-api",
 "next"=> #Jekyll:Post @id="/lessons/template-data-api",
 "previous"=> #Jekyll:Post @id="/lessons/configuring-urls",
 "tags"=>["tagname1", "tagname2"],
 "custom_variable"=> ["a", "custom", "defined", "data-structure"],
 "content"=>"... this is the unparsed raw html page/post content ..."
}

自定义参数

您可以在 post/page 的 YAML 信息里自定义变量,这些变量将会包含在该页面的配置项里。

注意

每次Jekyll 渲染一个 post/page 实例时,所有的YAML 信息都会合并在当前 post / page 实例里。如果您在 post 的YAML 信息里定义一个变量,在子模板、根模板里都定义了这个变量,所有的数据都会合并在同一个 配置项里,这样将会产生数据的覆盖。

Content参数

Jekyll 使用content变量来引用当前页面的内容。contentpage.content的不同在于:前者将会被解析为markdown或者textile,而后者则不进行解析,表示原内容。content变量只使用在模板文件和嵌入在模板里的子模板文件里。

主模板里的Content参数

当在主模板里使用content参数时,将会把需要此主模板呈现的子模板 page/post 加载至content参数的位置上。

子模板里的Content参数

当在子模板里使用content参数时,将会把需要此子模板呈现的子子模板 page/post 加载至content参数的位置上。如果没有其他内容,content只表现出将 page/post 作为markdown 或 textile 处理之后的结果。

Site参数

这些参数可以用在支持Liquid的任何地方。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
site = {
  "related_posts"=>
    [...(Array of liquified Jekyll::Post objects)...],
 "safe"=>false,
 "auto"=>true,
 "server"=>true,
 "server_port"=>4000,
 "source"=>"/Users/jade/Dropbox/github/jekyll-bootstrap",
 "destination"=>"/Users/jade/Dropbox/github/jekyll-bootstrap/_site",
 "plugins"=>"/Users/jade/Dropbox/github/jekyll-bootstrap/_plugins",
 "future"=>true,
 "lsi"=>false,
 "pygments"=>false,
 "markdown"=>"maruku",
 "permalink"=>"/:categories/:title.html",
 "markdown_ext"=>"markdown,mkd,mkdn,md",
 "textile_ext"=>"textile",
 "maruku"=>
  {
   "use_tex"=>false,
   "use_divs"=>false,
   "png_engine"=>"blahtex",
   "png_dir"=>"images/latex",
   "png_url"=>"/images/latex"
  },
 "rdiscount"=>
  {
    "extensions"=>[]
  },
 "redcarpet"=>
  {
    "extensions"=>[]
  },
 "kramdown"=>
  {
   "auto_ids"=>true,
   "footnote_nr"=>1,
   "entity_output"=>"as_char",
   "toc_levels"=>"1..6",
   "use_coderay"=>false,
   "coderay"=>
    {
     "coderay_wrap"=>"div",
     "coderay_line_numbers"=>"inline",
     "coderay_line_number_start"=>1,
     "coderay_tab_width"=>4,
     "coderay_bold_every"=>10,
     "coderay_css"=>"style"
    }
  },
 "time"=>2011-12-20 14:03:53 -0800,
 "posts"=>
  [...(Array of liquified Jekyll::Post objects)...],
 "pages"=>
  [...(Array of liquified Jekyll::Page objects)...],
 "html_pages"=>
  [...(Array of liquified Jekyll::Page objects)...],
 "categories"=>
  {"examples"=>
    [...(Array of liquified Jekyll::Post objects)...],
   "lessons"=>
    [...(Array of liquified Jekyll::Post objects)...],
 "tags"=>
  {
   "permalinks"=>
    [...(Array of liquified Jekyll::Post objects)...],
   "urls"=>
    [...(Array of liquified Jekyll::Post objects)...],
   "templating"=>
    [...(Array of liquified Jekyll::Post objects)...],
   "liquid"=>
    [...(Array of liquified Jekyll::Post objects)...],
   "posts"=>
    [...(Array of liquified Jekyll::Post objects)...]
  }
}

自定义参数

使用_config.yml文件来自定义Site参数,配置文件中的变量将会合并到站点参数里。

分类

分类适合用在post页面里。在每个post页面的基础上,将所有的类别汇总在一个全局变量里,即所有的类别可用于整个站点。

当遍历这些类别时,将按字母降序的顺序进行。

标签

标签适合用在post页面里。在每个post页面的基础上,将所有的标签汇总在一个全局变量里,即所有的标签可用于整个站点。

当遍历这些标签时,将按字母降序的顺序进行。