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 %}