我在How to customize the sorting of items on a page with jekyll上提到了这个链接。虽然这个想法与我的需求非常相似,但设置并不适合我。
情境:
我有一个帖子列表,每个帖子只有一个类别,例如category A
,category B
,category C
等。我需要的订单是category B
,category A
,category C
。
当前设置
loop.html
的当前MWE如下:
{% for category in site.categories %}
<h3>{{ category[0] | capitalize }}</h3>
{% for post in category[1] %}
<h4><a href="{{ post.url }}">{{ post.title }}</a></h4>
{{ post.excerpt }}
{% endfor %}
{% endfor %}
我相信,这只是根据发布日期进行排序。我可以按字母顺序排序,但无法将其设为B
,A
,C
。
我的所有帖子都有类别,每个帖子只有一个类别。
当我在前面提到的链接中执行帖子中显示的步骤时,循环变为空白。
答案 0 :(得分:2)
按照您想要的顺序为每个类别数组使用相同的代码:
{% for category in site.categories.categoryB %}
....
{% for category in site.categories.categoryA %}
...
{% for category in site.categories.categoryC %}
....
你可以改进它,将for循环放在include中,然后将每个类别数组作为参数传递,这样就可以避免重复代码。
另一种方法是按照你想要的顺序创建数组,然后创建for循环。
{% assign result = site.categories.categoryB %}
{% assign result = result | concat: site.categories.categoryA %}
{% assign result = result | concat: site.categories.categoryC %}
{% for category in result %}
....