数据文件

时间:2015-08-10 00:56:25

标签: jekyll liquid

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"}

我接受了这些信息,并开始制作 person-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>

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

---
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中通过前面的内容传递一个记录,如上例所示吗

1 个答案:

答案 0 :(得分:1)

循环:

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

注意我们只是将有用的部分(人[1])分配给人。

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