feat: add sitemap.xml generation with URL pattern exclusions

Wire up @quasibit/eleventy-plugin-sitemap (already installed) with a
sitemap.njk template and excludeFromSitemap filter. Excludes replies,
feeds, categories, digest, debug pages, admin pages, and 404.
This commit is contained in:
Ricardo
2026-03-29 10:59:33 +02:00
parent 79d072ac59
commit 489c467a3f
2 changed files with 30 additions and 0 deletions

View File

@@ -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 "";

7
sitemap.njk Normal file
View File

@@ -0,0 +1,7 @@
---
permalink: /sitemap.xml
layout: null
eleventyExcludeFromCollections: true
---
{% set sitemapItems = collections.all | excludeFromSitemap %}
{% sitemap sitemapItems %}