Jekyll中按类别自定义排序类别和组帖子

时间:2017-07-30 17:40:11

标签: jekyll liquid

我在How to customize the sorting of items on a page with jekyll上提到了这个链接。虽然这个想法与我的需求非常相似,但设置并不适合我。

情境:

我有一个帖子列表,每个帖子只有一个类别,例如category Acategory Bcategory C等。我需要的订单是category Bcategory Acategory 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 %}

我相信,这只是根据发布日期进行排序。我可以按字母顺序排序,但无法将其设为BAC

我的所有帖子都有类别,每个帖子只有一个类别。

当我在前面提到的链接中执行帖子中显示的步骤时,循环变为空白。

1 个答案:

答案 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 %}
    ....