Files
andwati.com/templates/taxonomy_single.html
T
andwati e992baf2d2 Migrate templates to Zola 0.23 / Tera v2
bin/update-zola always installs the latest release, which as of
v0.23.0 rewrote the template engine to Tera v2. That broke the whole
site: removed filters (slice, concat, escape), test calls now require
named args, shortcodes are gone in favor of Tera components, and
content itself is now Tera-templated before markdown runs.

- slice(end=n) -> native [:n] slicing; concat(with=x) -> spread [...arr, x]
- escape -> escape_html; starting_with/containing -> named `pat` arg
- get_taxonomy_url `name` -> `term` (old name is deprecated)
- %+ date format no longer recognized; replaced with explicit RFC3339 pattern
- shortcodes (note/tip/warning/danger/youtube) rewritten as components;
  content call sites updated to component invocation syntax
- {% include %} no longer inherits for-loop-local variables (only ambient
  page/section context) - post-card.html converted to a component that
  takes page/index explicitly instead of relying on implicit `page`/`loop`
- two content code blocks with literal Jinja-style {{ }} syntax (Netlify
  CMS config, a Flask template snippet) wrapped in {% raw %} so Tera
  doesn't try to render them, since content is now templated too
- fixed a real content corruption bug along the way: the youtube
  shortcode's multi-line <iframe> tag had a conditional that could
  collapse to a whitespace-only line, which prematurely closed the
  HTML block under CommonMark rules and got the rest of the tag
  syntax-highlighted as code instead of rendered

Verified with a clean `zola build` and `zola serve` on v0.23.1, plus a
spot-check of the rendered HTML for both callouts and the video embed.
`zola check` only reports pre-existing external link rot, unrelated to
this change.
2026-08-07 10:46:09 +03:00

78 lines
3.7 KiB
HTML

{% extends "base.html" %} {% block title %}Tag: {{ term.name }} | {{ config.title }}{% endblock
title %} {% block description %}{{ config.extra.tag_descriptions[term.slug] | default(value='Posts tagged "' ~ term.name ~ '" on ' ~ config.title) }}{% endblock
description %} {% block canonical %}{{ term.permalink }}{% endblock canonical %} {% block og_title
%}Tag: {{ term.name }} | {{ config.title }}{% endblock og_title %} {% block og_description %}{{
config.extra.tag_descriptions[term.slug] | default(value='Posts tagged "' ~ term.name ~ '" on ' ~ config.title) }}{% endblock og_description %} {% block og_url %}{{
term.permalink }}{% endblock og_url %} {% block head %}
{% set tag_ld_name = 'Posts tagged "' ~ term.name ~ '" | ' ~ config.title %}
{% set tag_ld_fallback_description = 'Posts tagged "' ~ term.name ~ '" on ' ~ config.title %}
<!-- SEO: Tag CollectionPage JSON-LD -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"@id": "{{ term.permalink | safe }}#collection",
"name": {{ tag_ld_name | json_encode | safe }},
"description": {% if config.extra.tag_descriptions[term.slug] %}{{ config.extra.tag_descriptions[term.slug] | json_encode | safe }}{% else %}{{ tag_ld_fallback_description | json_encode | safe }}{% endif %},
"url": "{{ term.permalink | safe }}",
"inLanguage": "en-US",
"isPartOf": {
"@type": "WebSite",
"@id": "{{ config.base_url | safe }}/#website"
},
"hasPart": [
{% for page in term.pages %}
{
"@type": "BlogPosting",
"@id": "{{ page.permalink | safe }}#article",
"headline": {{ page.title | json_encode | safe }},
"image": "{{ config.base_url | safe }}{% if page.extra.image %}{{ page.extra.image | safe }}{% else %}/images/og-image.png{% endif %}",
"url": "{{ page.permalink | safe }}",
"author": {
"@type": "Person",
"@id": "{{ config.base_url | safe }}/#author"
}
{% if page.date %},"datePublished": "{{ page.date | date(format="%Y-%m-%dT%H:%M:%S%:z") }}"{% endif %}
{% if page.updated %},"dateModified": "{{ page.updated | date(format="%Y-%m-%dT%H:%M:%S%:z") }}"{% elif page.date %},"dateModified": "{{ page.date | date(format="%Y-%m-%dT%H:%M:%S%:z") }}"{% endif %}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
</script>
<!-- SEO: BreadcrumbList JSON-LD -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "{{ config.base_url | safe }}/" },
{ "@type": "ListItem", "position": 2, "name": "Tags", "item": "{{ config.base_url | safe }}/tags/" },
{ "@type": "ListItem", "position": 3, "name": {{ term.name | json_encode | safe }}, "item": "{{ term.permalink | safe }}" }
]
}
</script>
{% endblock head %} {% block content %}
<div class="post-detail">
<header class="post-header list-page-header">
<h1 class="post-title list-page-title"><span class="term-hash">#</span>{{ term.name }}</h1>
{% if config.extra.tag_descriptions[term.slug] %}
<p class="tag-description">{{ config.extra.tag_descriptions[term.slug] }}</p>
{% endif %}
</header>
<div class="archive-list">
<div class="archive-year">
<ul class="archive-items">
{% for page in term.pages %}
<li class="archive-item hover-scale">
<time datetime="{{ page.date }}" class="archive-date">{{ page.date | date(format="%d-%b") }}</time>
<a href="{{ page.permalink }}" class="archive-link">{{ page.title }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endblock content %}