From 6282bd92219606cc53dee7f7a8f9a5264461b83e Mon Sep 17 00:00:00 2001 From: Nicolas Elie <40382614+n-elie@users.noreply.github.com> Date: Sat, 6 Feb 2021 02:37:31 +0100 Subject: [PATCH] Allow custom sorting for collections (#2723) * Allow custom sorting for collections * Update docs with custom sort of collections * Refactoring --- _includes/documents-collection.html | 18 ++++++------------ docs/_docs/10-layouts.md | 7 ++++++- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/_includes/documents-collection.html b/_includes/documents-collection.html index 376a509e..e88d8c4c 100644 --- a/_includes/documents-collection.html +++ b/_includes/documents-collection.html @@ -1,17 +1,11 @@ {% assign entries = site[include.collection] %} -{% if include.sort_by == 'title' %} - {% if include.sort_order == 'reverse' %} - {% assign entries = entries | sort: 'title' | reverse %} - {% else %} - {% assign entries = entries | sort: 'title' %} - {% endif %} -{% elsif include.sort_by == 'date' %} - {% if include.sort_order == 'reverse' %} - {% assign entries = entries | sort: 'date' | reverse %} - {% else %} - {% assign entries = entries | sort: 'date' %} - {% endif %} +{% if include.sort_by %} + {% assign entries = entries | sort: include.sort_by %} +{% endif %} + +{% if include.sort_order == 'reverse' %} + {% assign entries = entries | reverse %} {% endif %} {%- for post in entries -%} diff --git a/docs/_docs/10-layouts.md b/docs/_docs/10-layouts.md index 50b13df1..04831882 100644 --- a/docs/_docs/10-layouts.md +++ b/docs/_docs/10-layouts.md @@ -250,7 +250,7 @@ This layout displays all documents grouped by a specific collection. It accommod collection: # collection name entries_layout: # list (default), grid show_excerpts: # true (default), false -sort_by: # date (default) title +sort_by: # date (default), title or any metadata key added to the collection's documents sort_order: # forward (default), reverse ``` @@ -264,6 +264,11 @@ collection: recipes ``` If you want to sort the collection by title add `sort_by: title`. If you want reverse sorting, add `sort_order: reverse`. +You can also use any metadata key that is present in the documents. For example, you can add `number: ` to your documents and use `number` as the sort key: + +```yaml +sort_by: number +``` ### `layout: category`