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