jekyll 是一个静态网站生成器.它通过标记语言 markdown 或 textile 和 模板引擎 liquid 转换生成网页.
文件结构
jekyll生成的文件结构如下
- _config.yml jekyll的全局配置文件。比如站点的名字等。要读取配置文件里面的内容可以
{ { site.baseurl } }
{ { site.name } }
-
注意: 两个括号中间不能有空格。括号和百分号之间也不能有空格
- _includes (包含文件) 用于保存一些html的模板文件。可以通过如下方式引入模板
{ % include filename % }
- _layouts:存放html布局文件。
{ { content } }
---
layout: post
---
-
_posts:存放你要发表的文章。格式YEAR-MONTH-DAY-title.MARKUP。文件名确定了发表的日期和标记语言。博客的日期格式通过_config.yml的permalink字段设置或者通过YAML FRONT Matter设置
-
_data:保存数据的。jekyll会自动加载这里的所有.jml或者.yaml结尾的文件。比如你有一个members.yml。那么你可以通过site.data.members访问该文件里的数据.Data Files
例如创建 _data/members.yml 文件
- name: Eric Mill
github: konklone
- name: Parker Moore
github: parkr
- name: Liu Fengyun
github: liufengyun
数据读取方式
{ % for member in site.data.members %}
{ { member.name } }
{ % endfor %}
模板语法
头部定义
头部定义主要用于指定模板(layout)和定义一些变量, 比如 标题(title), 描述(description), 分类(category/categories), tags, 是否发布(published), 自定义变量.
---
layout: post #固定格式
title: title
category: blog #文章分类
description: description
published: true # default true 是否发布文章
permalink: /aaa #设置当前访问路由
custom: value
---
- 变量使用
page.title
page.category
page.custom
page.description
page表示当前页
全局根结点site
site变量在_config.yml中配置。默认的一些变量如下
site.time #运行 jekyll 的时间
site.pages #所有页面
site.posts #所有文章
site.related_posts #类似的10篇文章,默认最新的10篇文章,指定lsi为相似的文章
site.static_files #没有被 jekyll 处理的文章,有属性 path, modified_time 和 extname.
site.html_pages #所有的 html 页面
site.data _data #目录下的数据
site.documents #所有 collections 里面的文档
site.categories #所有的 categorie
site.tags #所有的 tag
site.constum #自定义变量
page(当前页面的配置信息) 下的变量
page.content #页面的内容
page.title #标题
page.excerpt #摘要,正文的第一段
page.url #链接
page.date #时间
page.id #唯一标示
page.categories #分类
page.tags #标签
page.path #源代码位置
page.next #下一篇文章
page.previous #上一篇文章
paginator(分页信息) 下的变量
paginator.per_page #每一页的数量
paginator.posts #这一页的数量
paginator.total_posts #所有文章的数量
paginator.total_pages #总的页数
paginator.page #当前页数
paginator.previous_page #上一页的页数
paginator.previous_page_path #上一页的路径
paginator.next_page #下一页的页数
paginator.next_page_path #下一页的路径
其他语法
- 循环
{ % for post in site.posts % }
{ { post.url } } { { post.title } }
{ { post.excerpt | remove: 'test' } }
{ % endfor % }
{ % for post in site.posts limit:20 offset:10 reversed % }
#code
{ % endfor % }
- 判断
- and 且
- or 或
- contains 包含
{ % if page.excerpt % }
{ { page.excerpt| strip_html } }
{ % elsif page.description % }
{ % else %}
{ { site.description } }
{ % endif %}
- 赋值
{ % assign index = 1 % }
{ % assign nick = member.nick %}
- 删除指定文本
{ { post.url | remove: 'http' } }
- 删除 html 标签
{ { post.excerpt | strip_html } }
- 代码高亮
{ % highlight swift % }
# some swift code
{ % endhighlight % }