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

Using a 'Where' filter in Jekyll to only return items that are not blank

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

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

我试过使用 where_exp,但它 returns 一切。解决这个问题的最佳方法是什么?是否可以在不使用 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 %}

您访问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>