Jekyll 是什么?

Jekyll是一个简单的、blog框架和静态网页生成器。本质上讲Jekyll 是一个文本转换引擎。

JekyII 框架结构

.
├── _config.yml
├── _includes
|  ├── footer.html
|  └── header.html
├── _layouts
|  ├── default.html
|  └── post.html
├── _posts
|  ├── 2014-06-24-jekyll.md
|  └── 2009-06-25-kramdown-diff.md
├── _data
|  └── members.yml
├── _site
└── index.html
  • _config.yml
    保存配置数据。

  • _drafts
    drafts 是未发布的文章。这些文件的格式中都没有 title.MARKUP 数据。

  • _includes
    可以加载这些包含部分到布局或者文章中以方便重用。可以用这个标签来把文件 _includes/file.ext 包含进来。

  • _layouts
    layouts 是包裹在文章外部的模板。布局可以在 YAML 头信息中根据不同文章进行选择。 标签可以将content插入页面中。

  • _posts
    这里放的就是你的文章了。文件格式很重要,必须要符合: YEAR-MONTH-DAY-title.MARKUP。 The permalinks 可以在文章中自己定制,但是数据和标记语言都是根据文件名来确定的。

  • _site
    一旦 Jekyll 完成转换,就会将生成的页面放在这里(默认)。最好将这个目录放进你的 .gitignore 文件中。

  • index.html and other HTML, Markdown, Textile files
    如果这些文件中包含 YAML 头信息 部分,Jekyll 就会自动将它们进行转换。当然,其他的如 .html, .markdown, .md,或者 .textile 等在你的站点根目录下或者不是以上提到的目录中的文件也会被转换。

  • Other Files/Folders
    其他一些未被提及的目录和文件如 css 还有 images 文件夹, favicon.ico 等文件都将被完全拷贝到生成的 site 中。

头信息

YAML头信息的格式在三虚线之间, 可以是预定义的变量或自己创建的变量

---
layout: post
title: Blogging
---

预定义的全局变量

  • layout
    指定 _layouts 目录下的模板文件

  • permalink
    如需让博客URL异于默认值 /year/month/day/title.html 设置这个变量。

  • published
    不需展示一个博文,可设置这个变量为 false。

  • category & categories
    文章类别。文章多个类别可以通过 YAML list来指定,或者用空格隔开。

  • tags
    类似分类,文章可增加一个或多个标签。不同标签可通过 YAML 列表或空格隔开

自定义变量

自定义变量都会在数据转换中通过 Liquid 模板被调用。

文章中变量

  • date
    这里的日期会覆盖文章名字中的日期。

博客文章

文章名

年-月-日-标题.md
2011-12-31-how-to-write-a-blog.md

内容格式

YAML头信息 + Markdown

引用图片和其他资源

![有帮助的截图](/assets/screenshot.jpg)

常用变量

全局变量

  • site
    来自_config.yml文件,全站范围的信息 +配置。

  • page
    页面专属的信息 + YAML 头文件信息。通过 YAML 头文件自定义的信息都可以在这里被获取。

  • content
    被 layout 包裹的那些 Post 或者 Page 渲染生成的内容。但是又没定义在 Post 或者 Page 文件中的变量。

  • paginator
    每当 paginate 配置选项被设置了的时候,这个变量就可用了

全站变量

  • site.time
    当前时间

  • site.pages
    所有 Pages 的清单

  • site.posts
    一个按照时间倒序的所有 Posts 的清单

  • site.related_posts
    如果当前被处理的页面是一个 Post,这个变量就会包含最多10个相关的 Post

  • site.categories.CATEGORY
    所有的在 CATEGORY 类别下的帖子

  • site.tags.TAG
    所有的在 TAG 标签下的帖子

  • site.[CONFIGURATION_DATA]
    所有的通过命令行和 _config.yml 设置的变量都会存到这个 site 里面。

页面变量

  • page.content
    页面内容的源码

  • page.title
    页面的标题

  • page.excerpt
    页面摘要的源码

  • page.url
    帖子以斜线打头的相对路径。

  • page.date
    帖子的日期。

  • page.id
    帖子的唯一标识码

  • page.categories
    这个帖子所属的 Categories

  • page.tags
    这个 Post 所属的所有 tags

  • page.path
    Post 或者 Page 的源文件地址

分页器

  • paginator.per_page
    每一页Posts的数量。

  • paginator.posts
    这一页可用的Posts。

  • paginator.total_posts
    Posts 的总数。

  • paginator.total_pages
    Pages 的总数。

  • paginator.page
    当前页号。

  • paginator.previous_page
    前一页的页号。

  • paginator.previous_page_path
    前一页的地址。

  • paginator.next_page
    下一页的页号。

  • paginator.next_page_path
    下一页的地址。