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 %}