在Jekyll中,如何在另一个集合的布局中使用变量的子类别?

时间:2017-01-27 14:38:15

标签: jekyll liquid

我有一系列项目。每个项目的一部分是参与该项目的人员列表:

---
layout: project
name: Important Project
participants:
- name: julia
  role: owner
- name: paul
  role: manager
- name: chris
  role: implementer
---

这些人中的每一个都在自己的收藏中,并且有一个页面列出了他们的详细信息。我想要包括他们一直在努力的项目以及他们的角色。这是我的最大努力但不起作用:

{% for project in site.projects %}
    {% if project.participants['name'] == {{ page.name }} %}
        <p>{{ project.name }} - {{ project.participants['role'] }}</p>
    {% endif %}
{% endfor %}

欢迎提出任何建议。

2 个答案:

答案 0 :(得分:3)

假设这个结构:

# _config.yml
collections:
- people
- projects

然后目录结构如:

_projects/project1.md
_people/person1.md
_people/person2.md

使用person1.md前面的内容,如:

---
name: julia
---

您提供的上述事项,这是如何显示每个人的项目和角色列表:

{% for person in site.people %}

Person {{person.name}}

{% for project in site.projects%}
 {% assign person_project = project.participants | where:"name",person.name | first %}

  Project: {{project.name}}
  Role: {{person_project.role}}

{% endfor %}
{% endfor %}

然后输出如下:

Person julia

Project: Important Project
Role: owner

然后您可以根据需要改进输出,例如使用表格:

{% for person in site.people %}
<table>
    <caption>{{person.name}} projects</caption>
    <tr>
    <th>Project</th>
    <th>Role</th>
    </tr>
    {% for project in site.projects%}
    {% assign person_project = project.participants | where:"name",person.name | first %}
    <tr>
    <td>{{project.name}}</td>
    <td>{{person_project.role}}</td>
    </tr>
    {% endfor %}
</table>
{% endfor %}

输出:

julia projects 
Project             Role
Important Project   owner

答案 1 :(得分:1)

我想你的参与者项目看起来像这样:

---
short: julia
firstname: Julia
lastname: Last
layout: participant
---
Content

在您的参与者布局中,您可以:

<h2>Participant : {{ page.firstname }} {{ page.lastname }}</h2>
{{ content }}
<h2>Projects :</h2>
<ul>
{% for project in site.projects %}
  {% for participant in project.participants %}
    {% if participant.name == page.short %}
      <li>{{ participant.role }} in <a href="{{ site.baseurl }}{{ project.url }}">{{ project.name }}</a></li>
    {% endif %}
  {% endfor %}
{% endfor %}
</ul>

参与者