diff options
| author | Christian Cleberg <[email protected]> | 2026-08-11 02:20:00 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-08-11 02:20:00 -0500 |
| commit | 41f1c71b19a786be9d37fe5d78298294f66f55b5 (patch) | |
| tree | 7c1a049ed0eee6ff609a3251bdb7b9bbaf7de985 /content/templates/base.html | |
| parent | 8ec9cdfeae71068a8924dd9f61b9cc28c947ec31 (diff) | |
| download | cleberg.net-41f1c71b19a786be9d37fe5d78298294f66f55b5.tar.gz cleberg.net-41f1c71b19a786be9d37fe5d78298294f66f55b5.tar.bz2 cleberg.net-41f1c71b19a786be9d37fe5d78298294f66f55b5.zip | |
Add an org-ssg build alongside the weblorg one
Builds the same site with org-ssg instead of weblorg, reproducing all 182 URLs the
current .build output has, plus 13 per-tag pages it does not.
org-ssg serve content -o /tmp/preview # write, with live reload
org-ssg build content -o _site --strict # build, failing on broken links
content/ is the source because it is the URL root: content/blog/post.org publishes at
/blog/post.html. Pointing at the repository root instead would prefix every URL with
/content/ and copy build.py, publish.el and LICENSE into the site as assets.
Added:
- content/org-ssg.toml — site metadata, an explicit nav, and four generated pages:
the home page, the blog index, the garden index, and tag pages with an index. URLs
come from #+SLUG:, which is why 2018-11-28-aes-encryption.org still publishes at
/blog/aes-encryption.html.
- content/templates/ — base, home, list and tags. Plain layouts using the .post-list
classes styles.css already defines, not a port of theme/templates/, which are
templatel and a different language.
- content/styles.css — a verbatim copy of theme/static/styles.css, because org-ssg
publishes assets from inside its source directory. `diff` between the two should stay
empty; consolidate them if this migration goes further.
Removed content/index.org. It held only #+title and #+description, both now [site]
settings, and a generated home page cannot share a URL with an authored one — org-ssg
fails that build rather than picking a winner. Restore with
`git checkout content/index.org`, but then the home collection needs a different output.
Nothing in the weblorg setup changed. publish.el, theme/ and build.py still work as
before, so both builds coexist until one is chosen.
Known difference: the nav renders Home, Salary, Blog, Garden, Tags — explicit source
pages come before generated ones, where the live site orders Salary last.
Diffstat (limited to 'content/templates/base.html')
| -rw-r--r-- | content/templates/base.html | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/content/templates/base.html b/content/templates/base.html new file mode 100644 index 0000000..19c5509 --- /dev/null +++ b/content/templates/base.html @@ -0,0 +1,52 @@ +{# Page layout for org-ssg. + + Styling comes from styles.css, a verbatim copy of theme/static/styles.css — the + stylesheet weblorg already serves. org-ssg publishes assets from inside its source + directory, so the copy lives here; `diff content/styles.css theme/static/styles.css` + should stay empty, or consolidate the two if you migrate for real. + + Available here: page (.title .url .date .date_iso .tags .excerpt .toc .keywords), + site, nav, root, stylesheet. See the org-ssg guide chapter on Templates. #} +<!DOCTYPE html> +<html lang="{{ site.language }}"> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>{{ page.title }} · {{ site.title }}</title> +{%- if site.base_url %} +<link rel="canonical" href="{{ page.url | absolute }}"> +{%- endif %} +{%- if page.excerpt %} +<meta name="description" content="{{ page.excerpt | truncate(150) }}"> +{%- endif %} +<link rel="stylesheet" href="{{ root }}styles.css"> +{%- if stylesheet %} +<link rel="stylesheet" href="{{ stylesheet }}"> +{%- endif %} +</head> +<body> +<header> +<nav> +<ul> +<li><a href="{{ root }}index.html">{{ site.title }}</a></li> +{%- for item in nav %} +<li><a href="{{ item.url }}">{{ item.title }}</a></li> +{%- endfor %} +</ul> +</nav> +</header> +<main> +<h1>{{ page.title }}</h1> +{%- if page.date_iso %} +<p><time datetime="{{ page.date_iso }}">{{ page.date_iso }}</time></p> +{%- endif %} +{%- if page.tags %} +<p>{% for tag in page.tags %}<a href="{{ root }}tags/{{ tag }}.html">#{{ tag }}</a> {% endfor %}</p> +{%- endif %} +{% block content %}{{ body | safe }}{% endblock %} +</main> +<footer> +<p><a href="{{ root }}index.html">{{ site.title }}</a> — {{ site.description }}</p> +</footer> +</body> +</html> |
