在 Jekyll(Liquid)上无法工作

On Jekyll (Liquid) can't get where working

我有一个people.yml喜欢

- name: Foo
  activities:
    - title: bar1
    - title: bar2

还有一个像

这样的赋值
{% assign person = site.data.people | where: "activities.title", "bar1" %}

当我以前每人只有一个 activity(没有 title 属性)时,我可以轻松地让它工作。但是现在我正在努力。

您不能将 Array 传递给 where 过滤器。它不会像 {"title"=>"bar1"} 这样通过遍历所有哈希来尝试找到所需的值,它只会根据传递的字符串评估 属性。所以,那些 Hash 永远不会等于 bar1.

我的两分钱:

通过删除 activities.name 键简化 people.yml : 注意:两个 activities 数组表示是等价的。

- name: Foo
  activities: [ bar1, bar2 ]

- name: Bar
  activities:
    - bar3
    - bar4

您现在可以使用 contains 过滤器来检索将 bar1 作为 activity 的人。 contains 过滤 stringsarray,如 ["bar1", "bar2"]

{% assign selected = "" | split: "/" %} --> create empty array
{% for people in site.data.people %}
    {% if people.activities contains 'bar1' %}
        --> add people to array if match is found
        {% assign selected = selected | push: people %} 
    {% endif %}
{% endfor %}