diff --git a/eleventy.config.js b/eleventy.config.js
index 25f9e56..5c4d741 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -70,19 +70,30 @@ module.exports = function(eleventyConfig) {
return Math.min.apply(null, numbers);
});
+ eleventyConfig.addFilter("filterDraft", articles => {
+ return articles.filter(article => !article.data.draft);
+ });
+
// Return all the tags used in a collection
eleventyConfig.addFilter("getAllTags", collection => {
- let tagSet = new Set();
+ let tags = new Map();
for(let item of collection) {
- (item.data.tags || []).forEach(tag => tagSet.add(tag));
+ if (item.data.draft) {
+ continue;
+ }
+ (item.data.tags || []).forEach(tag => {
+ let number = tags.get(tag) || 0;
+ tags.set(tag, ++number);
+ });
}
- return Array.from(tagSet).sort((a, b) => {
- return a.localeCompare(b, undefined, {sensitivity: 'base'});
- });
+ let sortedTags = new Map([...tags.entries()].sort((a, b) => b[1] - a[1]));
+ return Array.from(sortedTags.keys());
});
eleventyConfig.addFilter("filterTagList", function filterTagList(tags) {
return (tags || []).filter(tag => ["all", "nav", "article", "articles"].indexOf(tag) === -1);
+ // const filters = ["all", "nav", "article", "articles"];
+ // return new Map([...tags].filter(([k, _]) => filters.indexOf(k) === -1));
});
eleventyConfig.addFilter("readableAuthors", (authors) => {
diff --git a/src/_layouts/article.njk b/src/_layouts/article.njk
index 950b83e..9264527 100644
--- a/src/_layouts/article.njk
+++ b/src/_layouts/article.njk
@@ -21,10 +21,11 @@ templateClass: tmpl-post
- {%- if collections.articles %}
+ {%- set articles = collections.articles | filterDraft %}
+ {%- if articles %}
{# these filters are locale-aware in 2.0.0-canary.14 #}
- {%- set previousArticle = collections.articles | getPreviousCollectionItem %}
- {%- set nextArticle = collections.articles | getNextCollectionItem %}
+ {%- set previousArticle = articles | getPreviousCollectionItem %}
+ {%- set nextArticle = articles | getNextCollectionItem %}
{%- if nextArticle or previousArticle %}