Jekyll中文文档__Collections

集合是将相关内容分组的好方法,例如团队成员或会议上的会谈。

Setup

要使用集合,您首先需要在 _config.yml 中定义它。例如,这里有一个 staff members 的集合:

collections:
  - staff_members

在这种情况下,collections 被定义为一个序列(即数组),没有为每个集合定义额外的元数据。您可以选择为集合指定元数据,方法是将 collections 定义为映射(即hashmap)而不是序列,然后在其中定义其他字段:

collections:
  staff_members:
    people: true

注意:
将集合定义为序列时,默认情况下不会渲染其页面。要启用此功能,必须在集合上指定 output: true,这需要将集合定义为映射。有关更多信息,请参阅 Output 一节。

Gather your collections(3.7.0)

您可以选择指定一个目录,通过 collections_dir: my_collections 将所有集合存储在同一位置。

然后,Jekyll将在 my_collections/_books 中查找 books 集合,并在 my_collections/_recipes 中查找 recipes 集合。

请确保将草稿和文章移动到自定义集合目录中

如果用 collections_dir: my_collections 指定一个目录将所有集合存储在同一个位置,则需要将_drafts_posts目录移动到 my_collections/_draftsmy_collections/_posts。请注意,集合目录的名称不能以下划线 (_) 开头。

Add content

创建相应的文件夹(例如 <source>/_staff_members )并添加文档。如果 front matter 存在,则处理 front matter ,并且 front matter 之后的所有内容都被推送到文档的 content 属性中。如果没有提供 front matter ,Jekyll将认为它是一个静态文件,内容将不会经过进一步处理。如果提供了 front matter ,Jekyll将把文件内容处理成预期的输出。

无论 front matter 是否存在,只有在集合的元数据中设置了 output: true 时,Jekyll才会写入目标目录(例如 _site )。

例如,以下是如何将一名 staff member 添加到上面的集合中。文件名为 ./_staff_members/jane.md ,包含以下内容:

---
name: Jane Doe
position: Developer
---
Jane has worked on Jekyll for the past *five years*.

请注意,尽管在内部被认为是一个集合,但以上内容并不适用于 posts 。具有有效文件名格式的文章将被标记为正在处理,即使它们不包含 front matter 。

请确保正确命名目录

文件夹的名称必须与您在 _config.yml 文件中定义的集合相同,并添加前面的 _ 字符。

Output

现在,您可以在页面上迭代 site.staff_members ,并输出每个 staff member 的内容。与文章类似,使用 content 变量访问文档的正文:

{% for staff_member in site.staff_members %}
  <h2>{{ staff_member.name }} - {{ staff_member.position }}</h2>
  <p>{{ staff_member.content | markdownify }}</p>
{% endfor %}

如果您希望Jekyll为集合中的每个文档创建一个渲染页面,您可以在 _config.yml 中的集合元数据中将 output "键"设置为true

collections:
  staff_members:
    output: true

您可以使用 url 属性链接到生成的页面:

{% for staff_member in site.staff_members %}
  <h2>
    <a href="{{ staff_member.url }}">
      {{ staff_member.name }} - {{ staff_member.position }}
    </a>
  </h2>
  <p>{{ staff_member.content | markdownify }}</p>
{% endfor %}

Permalinks

集合有一些特殊的 permalink 变量 ,可以帮助您控制整个集合的输出 url 。

自定义文档排序(4.0)

默认情况下,当集合中的两个文档的 front matter 都有 date "键"时,它们将按 date 属性进行排序。但是,如果其中一个或两个文档的 front matter 都没有 date “键”,则会按各自的路径进行排序。

您可以通过集合的元数据来控制这种排序。

按照 Front Matter "键"排序

通过将 sort_by 元数据设置为 front matter "键"字符串,可以基于 front matt “键"对文档进行排序。例如,要根据"键” lesson 对教程集合进行排序,配置为:

collections:
  tutorials:
    sort_by: lesson

这些文档是按照"键"值的递增顺序排列的。如果一个文档没有定义 front matter “键”,那么该文档将立即放置在排序后的文档之后。当多个文档没有定义 front matter "键"时,这些文档将按其日期或路径进行排序,然后立即放置在排序后的文档之后。

手动排序文档

您也可以通过设置 order 元数据来手动排序文档,其中文件名按所需顺序列出。例如,教程集合将配置为:

collections:
  tutorials:
    order:
      - hello-world.md
      - introduction.md
      - basic-concepts.md
      - advanced-concepts.md

任何文件名与列表条目不匹配的文档都会被放在重新排列的文档之后。如果文档嵌套在子目录下,请将它们也包括在条目中:

collections:
  tutorials:
    order:
      - hello-world.md
      - introduction.md
      - concepts/basics.md
      - concepts/advanced.md

如果两个元数据"键"都已正确定义,则 order 列表优先。

Liquid Attributes

Collections

可以通过 site.collections 获取 Collections ,元数据(您在_config.yml中指定的(如果存在))和以下信息:

VariableDescription

label

The name of your collection, e.g. my_collection.

docs

An array of documents.

files

An array of static files in the collection.

relative_directory

The path to the collection's source directory, relative to the site source.

directory

The full path to the collections's source directory.

output

Whether the collection's documents will be output as individual files.

==========================================

硬编码集合

除了您自己创建的任何集合外,posts集合在Jekyll中是硬编码的。无论是否有_posts目录,它都存在。在迭代site.collections时需要注意这一点,因为您可能需要将其过滤掉。

您可能希望使用筛选器来查找您的集合:{{ site.collections | where: "label", "myCollection" | first }}

集合与时间

除了硬编码的默认的集合 posts 中的文档外,您创建的集合中的所有文档都可以通过 Liquid 访问,无论其指定的日期(如果有的话)如何,因此都是可渲染的。

只有当相关的集合元数据拥有 output: true 时,才会尝试将文档写入磁盘。此外,只有在 site.future 也是 true 的情况下,才会写入 future-dated 文档。

可以通过在文档的 front matter 设置 published: false(默认为 true)来对写入磁盘的文档进行更细粒度的控制。

Documents

除了文档的对应文件中提供的任何 front matter 外,每个文档都具有以下属性:

VariableDescription

content

The (unrendered) content of the document. If no front matter is provided, Jekyll will not generate the file in your collection. If front matter is used, then this is all the contents of the file after the terminating --- of the front matter.

output

The rendered output of the document, based on the content.

path

The full path to the document's source file.

relative_path

The path to the document's source file relative to the site source.

url

The URL of the rendered collection. The file is only written to the destination when the collection to which it belongs has output: true in the site's configuration.

collection

The name of the document's collection.

date

The date of the document's collection.

===================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值