Jekyll数据手动输出顺序
Jekyll data manual output order
如何按特定顺序从数据文件中输出项目?
假设我的数据文件如下所示:
[{
"name": "Tim"
}, {
"name": "Paul"
}, {
"name": "Brian"
}, {
"name": "James"
}, {
"name": "Mark"
}]
没有真正投入足够的精力,我写了以下内容:
{% for item in site.data.example %}
{% if
item.name == "Mark" or
item.name == "Brian" or
item.name == "James"
%}
<div>
{{ item.name }}
</div>
{% endif %}
{% endfor %}
...这显然会输出:
<div>Brian</div>
<div>James</div>
<div>Mark</div>
...当我希望订单为:
<div>Mark</div>
<div>Brian</div>
<div>James</div>
除了更改数据文件中的顺序外,我想不出强制执行特定顺序的方法,但这对我来说不是一个可行的选择。
创建具有所需顺序的索引,它可以在另一个数据文件中或直接作为 Liquid 数组。
然后对于索引中的每一项,遍历数据文件处理选择匹配的:
{% assign listorder = "Mark,Brian,James" |split: ","%}
{% for order in listorder %}
{% for data in site.data.mydata %}
{% if data['name']==order%}
{{data['name']}},
{% endif %}
{% endfor%}
{% endfor %}
输出:
Mark, Brian, James,
在数据文件中包含订单
创建 _data/order.yml
:
- Mark
- Brian
- James
然后在代码中使用:{% for order in site.data.order %}
如何按特定顺序从数据文件中输出项目?
假设我的数据文件如下所示:
[{
"name": "Tim"
}, {
"name": "Paul"
}, {
"name": "Brian"
}, {
"name": "James"
}, {
"name": "Mark"
}]
没有真正投入足够的精力,我写了以下内容:
{% for item in site.data.example %}
{% if
item.name == "Mark" or
item.name == "Brian" or
item.name == "James"
%}
<div>
{{ item.name }}
</div>
{% endif %}
{% endfor %}
...这显然会输出:
<div>Brian</div>
<div>James</div>
<div>Mark</div>
...当我希望订单为:
<div>Mark</div>
<div>Brian</div>
<div>James</div>
除了更改数据文件中的顺序外,我想不出强制执行特定顺序的方法,但这对我来说不是一个可行的选择。
创建具有所需顺序的索引,它可以在另一个数据文件中或直接作为 Liquid 数组。
然后对于索引中的每一项,遍历数据文件处理选择匹配的:
{% assign listorder = "Mark,Brian,James" |split: ","%}
{% for order in listorder %}
{% for data in site.data.mydata %}
{% if data['name']==order%}
{{data['name']}},
{% endif %}
{% endfor%}
{% endfor %}
输出:
Mark, Brian, James,
在数据文件中包含订单
创建 _data/order.yml
:
- Mark
- Brian
- James
然后在代码中使用:{% for order in site.data.order %}