2017-08-12 52 views
1

有沒有一種方法可以用Jekyll/Liquid按兩個字段對列表進行排序?例如,按年份排序,然後按標題排序。我曾嘗試:有沒有辦法在兩個字段中對Jekyll中的列表進行排序?

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

但離開它排序僅基於最後一個字段,在這種情況下的稱號。有一些關於此的討論,但它似乎已被凍結而未被合併:https://github.com/jekyll/jekyll/issues/1802

謝謝!

回答

1

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> 
+0

這奏效了!非常感謝'group_by'提示。前兩個任務也可以在你的例子中合併('{%assign years = site.data.papers.papers | group_by:'year'| sort:'name'%}'),但這並不改變你的代碼工作。 – wonder

相關問題