diff --git a/eleventy.config.js b/eleventy.config.js index 2a1d644..1528871 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -674,6 +674,29 @@ export default function (eleventyConfig) { }); }); + // Exclude pages from sitemap by URL pattern + // Usage: collections.all | excludeFromSitemap + eleventyConfig.addFilter("excludeFromSitemap", (items) => { + const excludePatterns = [ + /^\/replies\//, + /^\/feed\.(xml|json)$/, + /\/feed\.(xml|json)$/, + /^\/categories\//, + /^\/digest/, + /^\/webmention-debug\//, + /^\/404\.html$/, + /^\/sitemap\.xml$/, + /^\/dashboard/, + /^\/homepage/, + /^\/search\//, + /^\/graph\//, + ]; + return items.filter((item) => { + const url = item.url || ""; + return !excludePatterns.some((pattern) => pattern.test(url)); + }); + }); + // Slugify filter eleventyConfig.addFilter("slugify", (str) => { if (!str) return ""; diff --git a/sitemap.njk b/sitemap.njk new file mode 100644 index 0000000..4436965 --- /dev/null +++ b/sitemap.njk @@ -0,0 +1,7 @@ +--- +permalink: /sitemap.xml +layout: null +eleventyExcludeFromCollections: true +--- +{% set sitemapItems = collections.all | excludeFromSitemap %} +{% sitemap sitemapItems %}