diff --git a/_config/shortcodes.js b/_config/shortcodes.js new file mode 100644 index 0000000..9b849ac --- /dev/null +++ b/_config/shortcodes.js @@ -0,0 +1,30 @@ +const seperator = { + start: '', + end: '', + total: '' +}; + +module.exports = function (eleventyConfig) { + // excerpt shortcode for feed layouts + // taken from https://github.com/brob/eleventy-plugin-blog-tools + eleventyConfig.addShortcode("excerpt", function (article) { + let excerpt = article.data.excerpt ? `

${article.data.excerpt}

` : ""; + const articleContent = article.templateContent; + + let startPosition = articleContent.toLowerCase().indexOf(seperator.start); + let endPosition = articleContent.toLowerCase().indexOf(seperator.end); + let totalPosition = articleContent.toLowerCase().indexOf(seperator.total) + + if (totalPosition !== -1) { + excerpt = articleContent.substring(0, totalPosition); + } else if (startPosition !== -1 && endPosition !== -1) { + excerpt = articleContent.substring(startPosition + seperator.start.length, endPosition); + } else if (!article.data.excerpt) { + let startPosition = articleContent.toLowerCase().indexOf('

'); + let endPosition = articleContent.toLowerCase().indexOf('

'); + + excerpt = articleContent.substring(startPosition + 3, endPosition); + } + return excerpt + }); +}; \ No newline at end of file diff --git a/eleventy.config.js b/eleventy.config.js index 83b0a5e..fa04a99 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -5,6 +5,7 @@ const toml = require("@iarna/toml"); const addDateParsing = require("./_config/date"); const addFilters = require("./_config/filters"); const addPlugins = require("./_config/plugins"); +const addShortcodes = require("./_config/shortcodes"); module.exports = function (eleventyConfig) { let siteData; @@ -28,6 +29,7 @@ module.exports = function (eleventyConfig) { addDateParsing(eleventyConfig, { TIME_ZONE: siteData.timezone }); addFilters(eleventyConfig, { TIME_ZONE: siteData.timezone, defaultLanguage: siteData.default_language }); addPlugins(eleventyConfig, { defaultLanguage: siteData.default_language }); + addShortcodes(eleventyConfig); return { markdownTemplateEngine: "njk",