文章
博客是 Jekyll 的内建功能。你可以将博客文章写成文本文件,Jekyll 会提供你所需的一切,将文本文件转换成博客。
文章文件夹
_posts
文件夹是博客文章的存放位置。你通常使用 Markdown 编写文章,HTML 也受支持。
创建文章
要创建一篇文章,请将一个文件添加到你的 _posts
目录,格式如下
YEAR-MONTH-DAY-title.MARKUP
其中 YEAR
是一个四位数字,MONTH
和 DAY
都是两位数字,MARKUP
是表示文件中所用格式的文件扩展名。例如,以下是有效文章文件名示例
2011-12-31-new-years-eve-is-awesome.md
2012-09-12-how-to-write-a-blog.md
所有博客文章文件都必须以 前端信息 开头,前端信息通常用于设置 布局 或其他元数据。对于一个简单的示例,这可以为空
---
layout: post
title: "Welcome to Jekyll!"
---
# Welcome
**Hello world**, this is my first Jekyll blog post.
I hope you like it!
ProTip™:链接到其他文章
使用 post_url
标签链接到其他文章,而不必担心当网站永久链接样式更改时 URL 会失效。
注意字符集
内容处理器可以修改某些字符,使它们看起来更漂亮。例如,Redcarpet 中的 smart
扩展将标准的 ASCII 引号字符转换为卷曲的 Unicode 引号字符。为了让浏览器正确显示这些字符,请通过在布局的 <head>
中包含 <meta charset="utf-8">
来定义字符集元值。
包括图像和资源
在某些时候,您会希望在文本内容中包含图片、下载或其他数字资产。一种常见的解决方案是在项目目录的根目录中创建一个名为 assets
的文件夹,将任何图片、文件或其他资源放置其中。然后,在任何文章中,都可以使用网站根目录作为要包含的资产的路径来链接到它们。最佳做法取决于您网站的(子)域名和路径的配置方式,但以下是一些 Markdown 中的简单示例
在文章中包含图片资产
... which is shown in the screenshot below:
![My helpful screenshot](/assets/screenshot.jpg)
链接到 PDF 以供读者下载
... you can [get the PDF](/assets/mydoc.pdf) directly.
显示文章索引
由于 Liquid 及其标签,在其他页面上创建文章索引应该很容易。以下是如何创建指向您的博客文章的链接列表的一个简单示例
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
您可以完全控制如何(以及在哪里)显示您的文章,以及如何构建您的网站。如果您想了解更多,您应该阅读有关 模板如何使用 Jekyll 的更多信息。
请注意,post
变量仅存在于上面的 for
循环中。如果您希望访问当前渲染的页面/文章的变量(包含 for
循环的文章/页面的变量),请改用 page
变量。
标签和类别
Jekyll 在博客文章中对标签和类别提供了一流的支持。
标签
文章的标签在文章的前置内容中定义,使用键 tag
(用于单个条目)或 tags
(用于多个条目)。
由于 Jekyll 期望多个项目映射到键 tags
,因此如果它包含空格,它将自动拆分字符串条目。例如,前置内容 tag: classic hollywood
将被处理成一个单一实体 "classic hollywood"
,前置内容 tags: classic hollywood
将被处理成一个条目数组 ["classic", "hollywood"]
。
无论选择哪个前置内容键,Jekyll 都会存储映射到复数键的元数据,该元数据会显示给 Liquid 模板。
当前网站中注册的所有标签都通过 site.tags
显示给 Liquid 模板。在页面上迭代 site.tags
将产生另一个包含两个项目的数组,其中第一个项目是标签的名称,第二个项目是具有该标签的文章数组。
{% for tag in site.tags %}
<h3>{{ tag[0] }}</h3>
<ul>
{% for post in tag[1] %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
类别
文章的类别与上述标签类似
- 它们可以通过前置内容使用键
category
或categories
(遵循与标签相同的逻辑)来定义 - 网站中注册的所有类别都通过
site.categories
显示给 Liquid 模板,可以对其进行迭代(类似于上述标签的循环)。
然而,类别和标签之间的相似性到此为止。
与标签不同,帖子的类别也可以由帖子的文件路径定义。高于 _posts
的任何目录都将作为类别读入。例如,如果帖子位于路径 movies/horror/_posts/2019-05-21-bride-of-chucky.markdown
,则 movies
和 horror
会自动注册为该帖子的类别。
当帖子还具有定义类别的 front matter 时,如果不存在,它们只会添加到现有列表中。
类别和标签之间的显著差异在于,帖子的类别可以合并到帖子的 生成的 URL 中,而标签不能。
因此,根据 front matter 是否具有 category: classic hollywood
或 categories: classic hollywood
,上述示例帖子的 URL 分别为 movies/horror/classic%20hollywood/2019/05/21/bride-of-chucky.html
或 movies/horror/classic/hollywood/2019/05/21/bride-of-chucky.html
。
帖子摘录
你可以通过使用帖子上的 excerpt
变量来访问帖子内容的片段。默认情况下,这是帖子中的第一段内容,但可以通过在 front matter 或 _config.yml
中设置 excerpt_separator
变量来自定义。
---
excerpt_separator: <!--more-->
---
Excerpt with multiple paragraphs
Here's another paragraph in the excerpt.
<!--more-->
Out-of-excerpt
下面是输出带有摘录的博客帖子列表的示例
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
{{ post.excerpt }}
</li>
{% endfor %}
</ul>
草稿
草稿是没有日期的文件名中的帖子。它们是你仍在处理且尚未发布的帖子。要开始使用草稿,请在网站根目录中创建一个 _drafts
文件夹并创建你的第一个草稿
.
├── _drafts
│ └── a-draft-post.md
...
要使用草稿预览你的网站,请使用 --drafts
开关运行 jekyll serve
或 jekyll build
。每个草稿文件的值修改时间将被分配给其日期,因此你将看到当前编辑的草稿作为最新帖子。