我有一个包含项目列表的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 %}
答案 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>