当前位置: 首页 > 工具软件 > jekyll-dash > 使用案例 >

Jekyll中文文档__Posts

曾阳飙
2023-12-01

写博客已经嵌入到了 Jekyll 中。你把博客文章写成文本文件,Jekyll提供了把它变成博客所需的一切。

The Posts Folder

_posts 文件夹是您的博客文章所在的位置。你通常用 Markdown 写文章,当然也支持HTML。

Creating Posts

要创建一篇文章,请按以下格式将文件添加到 _posts 目录:

YEAR-MONTH-DAY-title.MARKUP

其中YEAR是一个四位数,MONTHDAY都是两位数,MARKUP是表示文件中使用的格式的文件扩展名。例如,以下是有效的 post 文件名示例:

2011-12-31-new-years-eve-is-awesome.md
2012-09-12-how-to-write-a-blog.md

所有博客文章文件都必须以 front matter 开头,它通常用于设置 layout 或其他元数据。对于一个简单的例子,它可以是空的:

---
layout: post
title:  "Welcome to Jekyll!"
---

# Welcome

**Hello world**, this is my first Jekyll blog post.

I hope you like it!

ProTip™: 链接到其他文章

使用 post_url tag 链接到其他文章,而不必担心网站 permalink 样式更改时 URLs 会中断。

注意字符集

内容处理程序可以修改某些字符,使其看起来更好。例如,Redcarpet 中的 smart 扩展将标准ASCII引号字符转换为Unicode字符大括号。为了让浏览器正确显示这些字符,请通过在布局的 <head> 中包含 <meta charset=“utf-8”> 来定义字符集 meta value 。

Including images and resources

在某些情况下,您会希望在文本内容中包含图像、下载或其他数字资产。一种常见的解决方案是在项目目录的根目录中创建一个文件夹,称为类似 assets 的文件夹,其中可以放置任何图像、文件或其他资源。然后,在任何文章中,使用网站的根目录作为要包含的 asset 的路径,就可以链接到它们。做到这一点的最佳方法取决于网站(子)域和路径的配置方式,但以下是Markdown中的一些简单示例:

在文章中包含图像 asset :

... which is shown in the screenshot below:
![My helpful screenshot](/assets/screenshot.jpg)

链接到PDF供读者下载:

... you can [get the PDF](/assets/mydoc.pdf) directly.

Displaying an index of posts

由于 Liquid 及其 tags ,在另一个页面上创建文章索引应该很容易。以下是一个简单的示例,说明如何创建指向博客文章的链接列表:

<ul>
  {% for post in site.posts %}
    <li>
      <a href="{{ post.url }}">{{ post.title }}</a>
    </li>
  {% endfor %}
</ul>

你可以完全控制你如何(以及在哪里)展示你的文章,以及你如何构建你的网站。如果你想了解更多,你应该阅读更多关于 how templates work with Jekyll 的信息。

请注意,post 变量只存在于上面的 for 循环中。如果希望访问当前渲染的页面/文章的变量(其中包含 for 循环的文章/页面的变量),请改用 page 变量。

Tags and Categories

Jekyll 对博客文章中的 tagscategories 有一流的支持。

Tags

文章的 Tags 是在文章的 front matter 中使用单个条目的 tag “键” 或多个条目的 tags 来定义的。

由于 Jekyll 期望多个项目映射到 tag “键”,因此如果字符串条目包含空格,它将自动拆分该条目。例如,当 front matter tag: classic hollywood 将被处理成一个单一的实体 "classic hollywood" 时,front matter tags: classic hollywood 会被处理成条目数组 ["classic", "hollywood"]

无论选择哪一个 front matter key ,Jekyll 都会存储映射到 plural key 的 metadata ,而 plural key 是暴露于 Liquid 模板的 。

当前网站中注册的所有 tags 都会通过 site.tags 暴露给 Liquid 模板。对页面上的 site.tags 迭代会产生另一个包含两个项目的数组,其中第一个项目是 tag 的名称,第二个项目是包含该 tag 的文章数组。

{% 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 %}

Categories

文章的 Categories 功能类似于上面的 tags :

  • 它们可以使用"键" categorycategories(遵循与 tags 相同的逻辑)通过 front matter 进行定义。
  • 网站中注册的所有 categories 都通过 site.categories 暴露在Liquid模板中。site.categories 可以迭代(类似于上面 tags 的循环)。

然而,categories 和 tags 之间的相似性到此为止。

与 tags 不同,文章的 categories 也可以由文章的文件路径定义。_posts 以上的任何目录都将作为一个类别读取。例如,如果一篇文章位于路径 movies/horror/_posts/2019-05-21-bride-of-chucky.markdown ,那么 movieshorror 将自动注册为该文章的类别。

当文章也有定义类别的 front matter 时,如果还没有出现,它们就会被添加到现有列表中。

categories 和 tags 之间的标志性区别在于,文章的类别可以合并到为文章生成的URL 中,而 tags 不能。

因此,根据 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

Post excerpts

您可以通过在文章上使用 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 文件夹,然后创建您的第一份草稿:

.
├── _drafts
│   └── a-draft-post.md
...

要使用草稿预览您的网站,请使用 --drafts 开关运行 jekyll serve 或者 jekyll build 。每篇草稿都将被分配草稿文件的修改时间值,来作为它的日期,因此您将看到当前编辑的草案作为最新的文章。

 类似资料: