Jekyll中文文档__Data Files

除了Jekyll提供的 built-in variables 外,您还可以指定自己的自定义数据,这些数据可以通过 Liquid templating system 访问。

Jekyll支持从_data目录中的YAML, JSON, CSV, 以及 TSV 文件加载数据。请注意,CSV和TSV文件必须包含一个标题行。

这个强大的功能使您可以避免模板中的重复,并在不更改_config.yml的情况下设置特定于站点的选项。

插件/主题还可以利用数据文件来设置配置变量。

The Data Folder

_data文件夹是您可以存储额外数据的地方,供Jekyll在生成站点时使用。这些文件必须是YAML、JSON、TSV或CSV文件(使用 .yml, .yaml, .json, .tsv, 或 .csv 扩展名),并且可以通过site.data访问。

Example: List of members

以下是使用数据文件避免在Jekyll模板中复制粘贴大块代码的基本示例:

_data/members.yml:

- name: Eric Mill
  github: konklone

- name: Parker Moore
  github: parkr

- name: Liu Fengyun
  github: liufengyun

_data/members.csv:

name,github
Eric Mill,konklone
Parker Moore,parkr
Liu Fengyun,liufengyun

这些数据可以通过 site.data.members 访问(请注意,文件的基本名称决定了变量名,因此应避免在同一目录中使用具有相同基本名称但不同扩展名的数据文件)。

现在可以在模板中渲染成员列表:

<ul>
{% for member in site.data.members %}
  <li>
    <a href="https://github.com/{{ member.github }}">
      {{ member.name }}
    </a>
  </li>
{% endfor %}
</ul>

Subfolders

数据文件也可以放置在 _data 文件夹的子文件夹中。每个文件夹级别都将添加到变量的命名空间中。下面的示例显示了如何在 orgs 文件夹下的文件中单独定义GitHub组织:

_data/orgs/jekyll.yml 中:

username: jekyll
name: Jekyll
members:
  - name: Tom Preston-Werner
    github: mojombo

  - name: Parker Moore
    github: parkr

_data/orgs/doeorg.yml:

username: doeorg
name: Doe Org
members:
  - name: John Doe
    github: jdoe

然后可以通过 site.data.orgs 访问这些组织,后面跟上文件名:

<ul>
{% for org_hash in site.data.orgs %}
{% assign org = org_hash[1] %}
  <li>
    <a href="https://github.com/{{ org.username }}">
      {{ org.name }}
    </a>
    ({{ org.members | size }} members)
  </li>
{% endfor %}
</ul>

Example: Accessing a specific author

页面和文章也可以访问特定的数据项。以下示例显示了如何访问特定项目:

_data/people.yml:

dave:
    name: David Smith
    twitter: DavidSilvaSmith

然后,作者可以被指定为文章 front matter 中的页面变量:

---
title: sample post
author: dave
---

{% assign author = site.data.people[page.author] %}
<a rel="author"
  href="https://twitter.com/{{ author.twitter }}"
  title="{{ author.name }}">
    {{ author.name }}
</a>

有关如何为您的网站构建强大导航的信息(尤其是如果您有文档网站或其他类型的Jekyll网站,需要组织大量页面),请参阅导航

CSV/TSV Parse Options

Ruby解析CSV和TSV文件的方式可以使用 csv_readertsv_reader配置选项进行自定义。每个配置’键"公开相同的选项:

  • converters :解析文件时应该使用什么 CSV converters 。可用选项有integer, float, numeric, date, date_timeall。默认情况下,此列表为空。
  • encoding :文件的编码方式。默认为站点 encoding 配置选项。
  • headers :用于是否将文件的第一行解析为头的布尔字段。如果为false,则将第一行视为数据。默认为true

例子:

csv_reader:
    converters:
      - numeric
      - datetime
    headers: true
    encoding: utf-8
tsv_reader:
    converters:
      - all
    headers: false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值