使用' Where'在Jekyll中过滤仅返回非空白的项目

时间:2017-07-25 23:13:30

标签: jekyll where assign

我有一个包含项目列表的CSV数据文件。我想将变量分配给过滤的数据段 - 然后循环遍历它们。

在这里,我尝试过滤所有项目,仅显示已在global_priority字段中分配了值的项目。如果项目没有价值我不会在列表中的内容。

我尝试过使用where_exp,但它会返回所有内容。解决这个问题的最佳方法是什么?是否可以在不使用if语句的情况下实现此目的?

projects.csv

name,global_priority,region,region_priority
Project A,1,Global,
Project B,,Spain,1
Project C,2,UK,1

循环

{% assign projects = site.data.projects %}
{% assign global_p = projects | where_exp: "item.global_priority", "item.global_priority != blank" %}

  {% for p in global_p %}
    <ul>
      <li>{{ p.global_priority }}</li>
      <li>{{ p.region }}</li>
      <li>{{ p.name }}</li>
    </ul>
  {% endfor %}

1 个答案:

答案 0 :(得分:1)

您访问where_exp项的方式存在一个小错误,它应该引用您将在比较中使用的名称:where_exp: "item"

然后:

{% assign global_p = site.data.projects | where_exp: "item", "item.global_priority" %}

{% for p in global_p %}
<ul>
  <li>{{ p.global_priority }}</li>
  <li>{{ p.region }}</li>
  <li>{{ p.name }}</li>
  </ul>
{% endfor %}

输出:

<ul>
  <li>1</li>
  <li>Global</li>
  <li>Project A</li>
  </ul>

<ul>
  <li>2</li>
  <li>UK</li>
  <li>Project C</li>
  </ul>