mirror of
https://github.com/andwati/andwati.com.git
synced 2026-10-23 11:32:16 +00:00
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.
32 lines
1.3 KiB
HTML
32 lines
1.3 KiB
HTML
{% if page.extra.series %}
|
|
{% set section_data = get_section(path="posts/_index.md") %}
|
|
{% set_global series_pages = [] %}
|
|
{% for p in section_data.pages %}
|
|
{% if p.extra.series and p.extra.series == page.extra.series %}
|
|
{% set_global series_pages = [...series_pages, p] %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set series_sorted = series_pages | sort(attribute="extra.series_index") %}
|
|
{% set series_total = series_sorted | length %}
|
|
|
|
<div class="series-nav" aria-label="Post series: {{ page.extra.series }}">
|
|
<div class="series-nav-header">
|
|
<span class="series-nav-eyebrow">{{ config.extra.series_label | default(value="Series") }}</span>
|
|
<span class="series-nav-title">{{ page.extra.series }}</span>
|
|
<span class="series-nav-badge">{{ page.extra.series_index }} / {{ series_total }}</span>
|
|
</div>
|
|
<ol class="series-nav-list">
|
|
{% for p in series_sorted %}
|
|
<li class="series-nav-item{% if p.permalink == page.permalink %} is-current{% endif %}">
|
|
<span class="series-nav-index">{{ p.extra.series_index }}</span>
|
|
{% if p.permalink == page.permalink %}
|
|
<span class="series-nav-label" aria-current="page">{{ p.title }}</span>
|
|
{% else %}
|
|
<a class="series-nav-label" href="{{ p.permalink }}">{{ p.title }}</a>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ol>
|
|
</div>
|
|
{% endif %}
|