详细教程(分步骤)
8. Blogging:Jekyll 博客系统
- Setup:安装、创建和构建 Jekyll 的详细教程
- Liquid:模板语言
- Front Matter:页面头部参数
- Layouts:布局
- Includes:引入文件、包含文件、可复用片段、模板片段
- Data Files:数据文件
- Assets:资源文件(css、js、图片)
- Blogging:Jekyll 博客系统
- Collections:集合(专题页面、聚合页面)
- Deployment:部署
你可能会好奇,博客怎么能在没有数据库的情况下运行?在 Jekyll 的风格下,博客完全由文本文件驱动。
文章
博客文章存放在 _posts
文件夹中。文章的文件名需要遵循特定格式:发布日期、标题,最后是文件扩展名。
在 _posts/2018-08-20-bananas.md
创建你的第一篇文章,内容如下:
---
layout: post
author: jill
---
香蕉是一种可食用的水果,从植物学角度来看,它属于浆果,由 Musa 属的多种大型草本开花植物所生产。
在一些国家,用于烹饪的香蕉可能被称为“芭蕉”,以区分它们与甜香蕉。这种水果的大小、颜色和硬度各不相同,但通常呈细长弯曲状,内部果肉柔软且富含淀粉,外皮可能是绿色、黄色、红色、紫色或成熟时呈棕色。
这与之前创建的 about.md
类似,不同之处在于它有 author
字段,并使用了不同的 layout
。author
是一个自定义变量,不是必须的,它也可以被命名为 creator
。
布局
post
布局目前还不存在,因此你需要在 _layouts/post.html
创建它,内容如下:
---
layout: default
---
<h1>{{ page.title }}</h1>
<p>{{ page.date | date_to_string }} - {{ page.author }}</p>
{{ content }}
这是一个布局继承的示例。post
布局会输出文章的标题、日期、作者和正文内容,并由 default
布局包裹。
另外,注意 date_to_string
过滤器,它会将日期格式化为更友好的形式。
文章列表
目前还没有办法访问博客文章。通常,博客会有一个页面列出所有文章,我们接下来就来实现这个功能。
Jekyll 通过 site.posts
提供文章列表。
在项目根目录创建 blog.html
(即 /blog.html
),内容如下:
---
layout: default
title: Blog
---
<h1>最新文章</h1>
<ul>
{% for post in site.posts %}
<li>
<h2><a href="{{ post.url }}">{{ post.title }}</a></h2>
{{ post.excerpt }}
</li>
{% endfor %}
</ul>
这里有几点需要注意:
-
post.url
由 Jekyll 自动设置,指向文章的输出路径。 -
post.title
默认从文件名中提取,可以在 front matter(页面头部参数)中手动设置title
来覆盖默认值。 -
post.excerpt
默认是文章的第一段内容。
此外,你还需要在主导航栏中添加一个链接,方便访问这个页面。打开 _data/navigation.yml
,添加如下条目:
- name: Home
link: /
- name: About
link: /about.html
- name: Blog
link: /blog.html
添加更多文章
只有一篇文章的博客会显得很单调。让我们再添加几篇文章:
_posts/2018-08-21-apples.md
:
---
layout: post
author: jill
---
苹果是一种甜美可食用的水果,由苹果树结出。
苹果树在全球范围内广泛种植,是 Malus 属中最常见的品种。苹果树起源于中亚,其野生祖先 Malus sieversii 仍然存在于该地区。几千年来,苹果在亚洲和欧洲都有种植,并由欧洲殖民者带到北美。
_posts/2018-08-22-kiwifruit.md
:
---
layout: post
author: ted
---
猕猴桃(常简称为 kiwi),或称中华猕猴桃,是 Actinidia 属多种木质藤本植物所结的可食用浆果。
最常见的猕猴桃品种呈椭圆形,大小类似于一颗大号鸡蛋(长 5–8 厘米,直径 4.5–5.5 厘米)。它的外皮呈纤维状,颜色暗绿至棕色,果肉则为亮绿色或金黄色,内部排列着一圈小而黑的可食用种子。猕猴桃的果肉柔软,口感甜美,风味独特。
打开 http://localhost:4000,浏览你的博客文章。
接下来,我们将创建一个页面,专门展示每位作者的文章。