Add tag index rendering
This commit is contained in:
+10
-2
@@ -115,6 +115,7 @@ class Site:
|
||||
page_num: int,
|
||||
total_pages: int,
|
||||
section: str | None,
|
||||
tag: str | None = None,
|
||||
) -> None:
|
||||
template = self.jinja_env.get_template("index.html")
|
||||
html = template.render(
|
||||
@@ -123,6 +124,7 @@ class Site:
|
||||
page_num=page_num,
|
||||
total_pages=total_pages,
|
||||
section=section,
|
||||
tag=tag,
|
||||
)
|
||||
out_file = out_dir / f"page-{page_num}.html"
|
||||
out_file.write_text(html, encoding="utf-8")
|
||||
@@ -132,16 +134,17 @@ class Site:
|
||||
items: list[Content],
|
||||
out_dir: Path,
|
||||
section: str | None,
|
||||
tag: str | None = None,
|
||||
) -> None:
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
if not items:
|
||||
log.warning("No content, generating empty index page")
|
||||
self.render_single_index_page(out_dir, (), 1, 1, section)
|
||||
self.render_single_index_page(out_dir, (), 1, 1, section, tag)
|
||||
else:
|
||||
num_pages = ceil(len(items) / self.items_per_page)
|
||||
for i, page_items in enumerate(batched(items, self.items_per_page)):
|
||||
self.render_single_index_page(
|
||||
out_dir, page_items, i + 1, num_pages, section
|
||||
out_dir, page_items, i + 1, num_pages, section, tag
|
||||
)
|
||||
index = out_dir / "index.html"
|
||||
if index.exists() or index.is_symlink():
|
||||
@@ -154,6 +157,11 @@ class Site:
|
||||
for section, items in self.by_section.items():
|
||||
sorted_items = sorted(items, key=lambda c: c.created, reverse=True)
|
||||
self.render_index_pages(sorted_items, self.output_path / section, section)
|
||||
for tag, items in self.by_tag.items():
|
||||
sorted_items = sorted(items, key=lambda c: c.created, reverse=True)
|
||||
self.render_index_pages(
|
||||
sorted_items, self.output_path / "tags" / tag, None, tag
|
||||
)
|
||||
|
||||
def build(self) -> None:
|
||||
if not self.origin:
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
{% extends "base.html" %}
|
||||
{% set prefix = (section + "/") if section else (("tags/" + tag + "/") if tag else "") %}
|
||||
{% set heading = section or tag or "" %}
|
||||
|
||||
{% block title %}{% if section %}{{ section }} — {% endif %}{{ site.name }}{% if page_num > 1 %} — Page {{ page_num }}{% endif %}{% endblock %}
|
||||
{% block title %}{% if heading %}{{ heading }} — {% endif %}{{ site.name }}{% if page_num > 1 %} — Page {{ page_num }}{% endif %}{% endblock %}
|
||||
|
||||
{% block head %}<link rel="canonical" href="{{ site.origin }}{{ site.base_dir }}{% if section %}{{ section }}/{% endif %}{% if page_num == 1 %}{% else %}page-{{ page_num }}.html{% endif %}">{% endblock %}
|
||||
{% block head %}
|
||||
<link rel="canonical" href="{{ site.origin }}{{ site.base_dir }}{{ prefix }}{% if page_num > 1 %}page-{{ page_num }}.html{% endif %}">
|
||||
{% if page_num > 1 %}<meta name="robots" content="noindex, follow">{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
{% if section %}<h1>{{ section }}</h1>{% endif %}
|
||||
{% if heading %}<h1>{{ heading }}</h1>{% endif %}
|
||||
{% for item in items %}
|
||||
<article>
|
||||
<header>
|
||||
@@ -18,15 +23,15 @@
|
||||
{% if total_pages > 1 %}
|
||||
<nav>
|
||||
{% if page_num > 1 %}
|
||||
<a href="{{ site.base_dir }}{% if section %}{{ section }}/{% endif %}page-{{ page_num - 1 }}.html">← Newer</a>
|
||||
<a href="{{ site.base_dir }}{{ prefix }}page-{{ page_num - 1 }}.html">← Newer</a>
|
||||
{% endif %}
|
||||
{% for p in range(1, total_pages + 1) %}
|
||||
{% if p == page_num %}<strong>{{ p }}</strong>
|
||||
{% else %}<a href="{{ site.base_dir }}{% if section %}{{ section }}/{% endif %}page-{{ p }}.html">{{ p }}</a>
|
||||
{% else %}<a href="{{ site.base_dir }}{{ prefix }}page-{{ p }}.html">{{ p }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if page_num < total_pages %}
|
||||
<a href="{{ site.base_dir }}{% if section %}{{ section }}/{% endif %}page-{{ page_num + 1 }}.html">Older →</a>
|
||||
<a href="{{ site.base_dir }}{{ prefix }}page-{{ page_num + 1 }}.html">Older →</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user