From bef7af2d0877344b380554d74873198380cfbbd5 Mon Sep 17 00:00:00 2001 From: Nicolas Doby Date: Fri, 25 Nov 2022 15:50:48 +0100 Subject: [PATCH] feat: add draft support --- eleventy.config.js | 21 ++++++++++---- src/_layouts/article.njk | 7 +++-- src/_pages/blog/all_articles.njk | 2 +- .../blog/article/benchmark_greenit_2023.md | 1 + .../comment_choisir_erp_responsable.md | 1 + .../ecoconception_web_exposition_celtique.md | 1 + .../impacts_envrionnementaux_du_numerique.md | 1 + src/_pages/blog/article/test.md | 28 +++++++++++++++++++ src/_pages/blog/feed/feed.njk | 4 +-- src/_pages/blog/feed/json.njk | 2 +- src/_pages/blog/index.njk | 2 +- 11 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 src/_pages/blog/article/test.md 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 %}