From c6f10b44f6878e76a416332f14e3681de8df40db Mon Sep 17 00:00:00 2001
From: Emile Bangma <github@emilebangma.com>
Date: Wed, 05 Mar 2025 23:54:11 +0000
Subject: [PATCH] feat(rss): configurable RSS feed URL (#1806)

---
 docs/plugins/ContentIndex.md            |    1 +
 docs/features/RSS Feed.md               |    5 +++++
 quartz/plugins/emitters/contentIndex.ts |    4 +++-
 3 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/docs/features/RSS Feed.md b/docs/features/RSS Feed.md
index ed4138d..4b1a1bb 100644
--- a/docs/features/RSS Feed.md
+++ b/docs/features/RSS Feed.md
@@ -1,5 +1,10 @@
 Quartz emits an RSS feed for all the content on your site by generating an `index.xml` file that RSS readers can subscribe to. Because of the RSS spec, this requires the `baseUrl` property in your [[configuration]] to be set properly for RSS readers to pick it up properly.
 
+> [!info]
+> After deploying, the generated RSS link will be available at `https://${baseUrl}/index.xml` by default.
+>
+> The `index.xml` path can be customized by passing the `rssSlug` option to the [[ContentIndex]] plugin.
+
 ## Configuration
 
 This functionality is provided by the [[ContentIndex]] plugin. See the plugin page for customization options.
diff --git a/docs/plugins/ContentIndex.md b/docs/plugins/ContentIndex.md
index eb7265d..037f723 100644
--- a/docs/plugins/ContentIndex.md
+++ b/docs/plugins/ContentIndex.md
@@ -17,6 +17,7 @@
 - `enableRSS`: If `true` (default), produces an RSS feed (`index.xml`) with recent content updates.
 - `rssLimit`: Defines the maximum number of entries to include in the RSS feed, helping to focus on the most recent or relevant content. Defaults to `10`.
 - `rssFullHtml`: If `true`, the RSS feed includes full HTML content. Otherwise it includes just summaries.
+- `rssSlug`: Slug to the generated RSS feed XML file. Defaults to `"index"`.
 - `includeEmptyFiles`: If `true` (default), content files with no body text are included in the generated index and resources.
 
 ## API
diff --git a/quartz/plugins/emitters/contentIndex.ts b/quartz/plugins/emitters/contentIndex.ts
index c0fef86..f4a1a91 100644
--- a/quartz/plugins/emitters/contentIndex.ts
+++ b/quartz/plugins/emitters/contentIndex.ts
@@ -25,6 +25,7 @@
   enableRSS: boolean
   rssLimit?: number
   rssFullHtml: boolean
+  rssSlug: string
   includeEmptyFiles: boolean
 }
 
@@ -33,6 +34,7 @@
   enableRSS: true,
   rssLimit: 10,
   rssFullHtml: false,
+  rssSlug: "index",
   includeEmptyFiles: true,
 }
 
@@ -151,7 +153,7 @@
           await write({
             ctx,
             content: generateRSSFeed(cfg, linkIndex, opts.rssLimit),
-            slug: "index" as FullSlug,
+            slug: (opts?.rssSlug ?? "index") as FullSlug,
             ext: ".xml",
           }),
         )

--
Gitblit v1.10.0