diff options
| author | Christian Cleberg <[email protected]> | 2026-08-11 13:41:18 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-08-11 13:41:18 -0500 |
| commit | ad2d5934148e17efa20e77879ddd45950209852b (patch) | |
| tree | f5f79818374a6d991182d4dc408c38d421414f2c /content/templates/feed.xml | |
| parent | 7e5c882d888ed7d4d635480a2dec92b4a3e7ddf8 (diff) | |
| download | cleberg.net-ad2d5934148e17efa20e77879ddd45950209852b.tar.gz cleberg.net-ad2d5934148e17efa20e77879ddd45950209852b.tar.bz2 cleberg.net-ad2d5934148e17efa20e77879ddd45950209852b.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.xml | 36 |
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> |
