来自数据文件的可重复使用的 Jekyll 部分

Reusable Jekyll parts from data file

Jekyll Docs之后,我开发了一个people.yml文件:

johnsmith:
  name: John Smith
  title: Director
  image: img/johnsmith.jpg

janedoe:
  name: Jane Doe
  title: Coordinator
  image: img/janedoe.jpg

如果我遍历人...

{% for person in site.data.people %}
  <p>{{ person }}</p>
{% endfor %}

...我得到这些输出:

johnsmith{"name"=>"John Smith", "title"=>"Director", "image"=>"img/johnsmith.jpg"}
janedoe{"name"=>"Jane Doe", "title"=>"Coordinator", "image"=>"img/janedoe.jpg"}

但是,当我尝试从 yaml 文件中仅访问一个成员时...

{% assign person = site.data.people['janedoe'] %}

...我得到的数据版本略有不同:

{"name"=>"Jane Doe", "title"=>"Coordinator", "image"=>"img/janedoe.jpg"}

我得到了这些信息,我着手制作一个人-card.html包括:

<div>
  <img src="{{ person[1].image }}" alt="{{ person[1].name }}">
</div>
<div>
  <p>{{ person[1].name }}</p>
  <p>{{ person[1].title }}</p>
</div>

在具有访问数据文件的循环的页面上,它有效。相反,如果我将它与从 front matter 传入的人一起使用,则它不起作用,因为必须删除索引。将其更改为有效:

---
layout: default
person: janedoe
---
{% assign person = site.data.people[page.person] %}
<div>
  <img src="{{ person.image }}" alt="{{ person.name }}">
</div>
<div>
  <p>{{ person.name }}</p>
  <p>{{ person.title }}</p>
</div>

我的问题 - 鉴于上面的 people.yml 文件,我如何制作一个可重复使用的包含,它可以在 for 循环中工作,也可以使用传入的 people.yml 中的单个记录像上面的例子一样通过前面的内容?

循环:

{% for people in site.data.people %}
    {% assign person = people[1] %}
    {% include person-card.html %}
{% endfor %}

请注意,我们只是将有用的部分 (people[1]) 分配给了 person。

_includes/person-card.html包括:

<div>
  <img src="{{ person.image }}" alt="{{ person.name }}">
</div>
<div>
  <p>{{ person.name }}</p>
  <p>{{ person.title }}</p>
</div>

简的页面:

---
layout: person
person: janedoe
---

_layouts/person.html布局:

---
layout: default
---
{% assign person = site.data.people[page.person] %}
{% include person-card.html %}