The framework automatically generates an RSS 2.0 feed from all posts in the pages/posts/ directory. No configuration is needed — the feed is available as soon as you have posts with the required metadata.
Accessing the Feed
Append ?rss to your site's root URL:
https://example.com/?rss
The feed is generated dynamically on each request. It reads all .html files in pages/posts/, extracts their metadata, sorts them by date (newest first), and outputs a valid RSS 2.0 XML document.
Category Feeds
The ?rss parameter doubles as a category selector. Give it a value to filter the feed to one or more categories (see Posts, Categories & Filtering for how categories are assigned):
https://example.com/?rss → all posts (default)
https://example.com/?rss=all → all posts (explicit)
https://example.com/?rss=tutorials → only the "tutorials" category
https://example.com/?rss=tutorials,seo → posts in either category
https://example.com/?rss=uncategorized → only untagged posts
A post is included if it belongs to any of the listed categories. Filtered feeds get the category name appended to the channel title (e.g. "My Site – Tutorials") so subscribers can tell them apart in their reader. Category names in the URL follow the same rules as category pages: lowercase letters, numbers, and hyphens — anything else is ignored.
Requesting a category that doesn't exist produces a valid, empty feed rather than an error. Note that because these are query strings, RSS requests are never cached — the ?rss check in index.php runs before the caching layer loads, so every feed request renders fresh.
What Gets Included
Only posts that have all four of the following metadata fields populated are included in the feed:
pagetitlepagedatepageexcerptpageimage
Posts missing any of these four fields are silently skipped. This is intentional — incomplete posts won't pollute your feed.
Feed Item Structure
Each item in the feed contains:
| RSS Element | Source |
|---|---|
<title> |
pagetitle metadata |
<link> |
$WebsiteURL/posts/[filename] |
<description> |
pageexcerpt metadata |
<pubDate> |
pagedate metadata, formatted as RSS date |
<enclosure> |
pageimage metadata (or $WebsiteImage as fallback), with MIME type and length="0" |
Channel-Level Information
The feed's channel metadata is drawn directly from config/config.php:
| RSS Channel Element | Config variable |
|---|---|
<title> |
$WebsiteTitle |
<link> |
$WebsiteURL |
<description> |
$WebsiteDescription |
<image><url> |
$WebsiteImage |
Embedding Your Feed in a Page
You can display your own feed (or any other RSS feed) on a page using the Error: RSS feed URL missing. shortcode:
Error loading RSS feed.
https://example.com/?rss
This will render the five most recent posts as an HTML block. See the Shortcodes page for full details on the Error: RSS feed URL missing. shortcode and its output structure.
How the Feed is Generated
The feed is handled by rss_generator.php in the site root. It is triggered by the ?rss query parameter check at the very top of index.php — if the parameter is present, the RSS generator is included and execution stops, so no page rendering occurs.
The generator uses the same HTML comment metadata pattern as the rest of the framework:
/<!--\s+pagetitle:(.*?)\s+-->/s
This means all post metadata must follow the standard comment format for the post to be picked up by the feed.