aboutsummaryrefslogtreecommitdiff
path: root/content/templates/feed.xml
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-08-11 13:41:18 -0500
committerChristian Cleberg <[email protected]>2026-08-11 20:35:15 -0500
commit9049e20a29fb54245079ec19ae4a503e3f8e2799 (patch)
treef5f79818374a6d991182d4dc408c38d421414f2c /content/templates/feed.xml
parent517926849ed9477def1de54c7b9b5e53eed46fe5 (diff)
downloadcleberg.net-9049e20a29fb54245079ec19ae4a503e3f8e2799.tar.gz
cleberg.net-9049e20a29fb54245079ec19ae4a503e3f8e2799.tar.bz2
cleberg.net-9049e20a29fb54245079ec19ae4a503e3f8e2799.zip
Bring the org-ssg templates to parity with the live site
The org-ssg build rendered the right content in the wrong chrome. Closing every difference found by comparing it against theme/templates/ and the live pages: - base.html: Home link written by the layout rather than the site title, a <title> of "Page - cleberg.net" (bare "cleberg.net" on the home page, via a subtitle block), author/description/og meta, the RSS alternate link, four rel="me" identity links, favicon, skip link, <main id="main-content">, aria-label on the nav, and the real footer. - home.html: the h1 is "Christian Cleberg" (the collection's title), and the email line has its GPG link back. - blog.html and garden.html: the two listings carry their own prose on the live site — the search/RSS hint, and the garden's growth stages — so they are no longer sharing the generic list.html. Tag pages still use it. - tags.html: "Browse posts by topic." - Blog posts get the reply-by-email and Bubbles lines. org-ssg has no per-page template selection, so the layout keys off the page's URL prefix. - Tags leaves the nav, which the live site does not have. feed.xml is new: the footer links /feed.xml and nothing was generating it. It is a collection whose template happens to be XML. Its <description> carries each post's excerpt rather than the full rendered body, which weblorg's feed does include — a collection template gets each entry's metadata, not its HTML. base_url is now set, since canonical links and a feed cannot be relative. Page links stay relative, so a preview build still works from any directory. gpg.txt, robots.txt and salary.csv are copied in from theme/static/: weblorg publishes that directory to the site root, and org-ssg publishes from content/, so /gpg.txt was a 404. styles.min.css is deliberately not copied — it is gitignored build output, and the tracked styles.css holds the same rules.
Diffstat (limited to 'content/templates/feed.xml')
-rw-r--r--content/templates/feed.xml36
1 files changed, 36 insertions, 0 deletions
diff --git a/content/templates/feed.xml b/content/templates/feed.xml
new file mode 100644
index 0000000..0319910
--- /dev/null
+++ b/content/templates/feed.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+{#- The RSS feed at /feed.xml, mirroring theme/templates/feed.xml. A feed is read away
+ from the site that served it, so every URL here is absolute — which is what
+ `| absolute` needs [site] base_url for.
+
+ One difference from weblorg: <description> carries each post's excerpt rather than its
+ full HTML. org-ssg gives a collection template each entry's metadata, not its rendered
+ body. #}
+<rss version="2.0"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>{{ site.title }}</title>
+ <atom:link href="{{ page.url | absolute }}" rel="self" type="application/rss+xml" />
+ <link>{{ "index.html" | absolute | replace("index.html", "") }}</link>
+ <description>{{ site.description }}</description>
+ <language>{{ site.language }}</language>
+ <webMaster>[email protected] (Christian Cleberg)</webMaster>
+{%- for post in pages %}
+ <item>
+ <title>{{ post.title }}</title>
+ <link>{{ post.url | absolute }}</link>
+ <guid isPermaLink="true">{{ post.url | absolute }}</guid>
+ <author>[email protected] (Christian Cleberg)</author>
+{%- if post.date_iso %}
+ <pubDate>{{ post.date_iso | rfc822 }}</pubDate>
+{%- endif %}
+{%- for tag in post.tags %}
+ <category>{{ tag }}</category>
+{%- endfor %}
+ <description>{{ post.excerpt }}</description>
+ </item>
+{%- endfor %}
+ </channel>
+</rss>