From bda4ce5ef263323e91e766e6a7be35fdba72a71f Mon Sep 17 00:00:00 2001 From: omicron Date: Fri, 7 Aug 2026 03:41:22 +0200 Subject: [PATCH] Add all tags page rendering --- omicron/ssg/site.py | 15 +++++++++++++++ omicron/ssg/templates/plain/tags.html | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 omicron/ssg/templates/plain/tags.html diff --git a/omicron/ssg/site.py b/omicron/ssg/site.py index abc539e..540c1eb 100644 --- a/omicron/ssg/site.py +++ b/omicron/ssg/site.py @@ -29,6 +29,7 @@ class Site: self.by_tag: dict[str, list[Content]] = {} self.by_uri: dict[str, Content] = {} self.by_section: dict[str, list[Content]] = {} + self.tags_by_count: list[tuple[str, int]] = [] config = self.read_config() self.name: str = config["name"] @@ -96,6 +97,11 @@ class Site: ) self.by_uri[content.uri] = content + def update_tags_by_count(self) -> None: + tags = [(tag, len(items)) for tag, items in self.by_tag.items()] + tags.sort(key=lambda x: x[1], reverse=True) + self.tags_by_count = tags + def discover(self) -> None: log.info("Discovering content...") content_path = self.site_path / "content" @@ -106,6 +112,7 @@ class Site: self.add_by_section(content) self.add_by_tag(content) self.content.append(content) + self.update_tags_by_count() log.info("Discovered %d content items", len(self.content)) def render_single_index_page( @@ -151,6 +158,13 @@ class Site: index.unlink() index.symlink_to("page-1.html") + def render_tags_page(self) -> None: + template = self.jinja_env.get_template("tags.html") + html = template.render(site=self, tags=self.tags_by_count) + tags_dir = self.output_path / "tags" + tags_dir.mkdir(parents=True, exist_ok=True) + (tags_dir / "index.html").write_text(html, encoding="utf-8") + def render_indices(self) -> None: sorted_all = sorted(self.content, key=lambda c: c.created, reverse=True) self.render_index_pages(sorted_all, self.output_path, None) @@ -162,6 +176,7 @@ class Site: self.render_index_pages( sorted_items, self.output_path / "tags" / tag, None, tag ) + self.render_tags_page() def build(self) -> None: if not self.origin: diff --git a/omicron/ssg/templates/plain/tags.html b/omicron/ssg/templates/plain/tags.html new file mode 100644 index 0000000..46143fd --- /dev/null +++ b/omicron/ssg/templates/plain/tags.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% block title %}Tags — {{ site.name }}{% endblock %} + +{% block head %} + +{% endblock %} + +{% block main %} +

Tags

+ +{% endblock %}