文章

博客是 Jekyll 的内建功能。你可以将博客文章写成文本文件,Jekyll 会提供你所需的一切,将文本文件转换成博客。

文章文件夹

_posts 文件夹是博客文章的存放位置。你通常使用 Markdown 编写文章,HTML 也受支持。

创建文章

要创建一篇文章,请将一个文件添加到你的 _posts 目录,格式如下

YEAR-MONTH-DAY-title.MARKUP

其中 YEAR 是一个四位数字,MONTHDAY 都是两位数字,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 %}

类别

文章的类别与上述标签类似

  • 它们可以通过前置内容使用键 categorycategories(遵循与标签相同的逻辑)来定义
  • 网站中注册的所有类别都通过 site.categories 显示给 Liquid 模板,可以对其进行迭代(类似于上述标签的循环)。

然而,类别和标签之间的相似性到此为止。

与标签不同,帖子的类别也可以由帖子的文件路径定义。高于 _posts 的任何目录都将作为类别读入。例如,如果帖子位于路径 movies/horror/_posts/2019-05-21-bride-of-chucky.markdown,则 movieshorror 会自动注册为该帖子的类别。

当帖子还具有定义类别的 front matter 时,如果不存在,它们只会添加到现有列表中。

类别和标签之间的显著差异在于,帖子的类别可以合并到帖子的 生成的 URL 中,而标签不能。

因此,根据 front matter 是否具有 category: classic hollywoodcategories: classic hollywood,上述示例帖子的 URL 分别为 movies/horror/classic%20hollywood/2019/05/21/bride-of-chucky.htmlmovies/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 servejekyll build。每个草稿文件的值修改时间将被分配给其日期,因此你将看到当前编辑的草稿作为最新帖子。