有没有办法按两个字段对 Jekyll 中的列表进行排序?



有没有办法用 Jekyll/Liquid 按两个字段对列表进行排序?例如,首先按年份排序,然后按标题排序。我试过:

{% assign list = site.data.papers.papers | sort: 'year' | sort: 'title' %}

但这使其仅根据最后一个字段(在本例中为标题(进行排序。对此有一些讨论,但它似乎在没有合并的情况下被冻结了:https://github.com/jekyll/jekyll/issues/1802

谢谢!

group_by救援:

{% assign years = site.data.papers.papers | group_by: "year" %}
{% assign yearsSorted = years | sort: "name" %}
<ul>
{% for y in yearsSorted %}
<li>{{ y.name }}
<ul>
{% assign yearTitlesSorted = y.items | sort: "title" %}
{% for t in yearTitlesSorted %}
<li>{{ t.title }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>

如果您从单个哈希array开始,并且希望以相同结构的相同数组结束(即不分组,只是多重排序(,请使用:

{% assign grouped = array | group_by: 'field1' %}
{% for item in grouped %}
{% assign sorted = item['items'] | sort: 'field2' %}
{% if forloop.first %}
{% assign array = sorted %}
{% else %}
{% assign array = array | concat: sorted %}
{% endif %}
{% endfor %}

最新更新