Migrate WordPress site to Hugo

Replaces the WordPress 7.0.2 / HitMag site with a static Hugo build,
deployed by Gitea Actions over rsync/SSH.

Content: 26 files (9 pages + 17 posts) as Markdown page bundles, plus
127 of 165 media attachments. The remaining 38 are media-library
leftovers that appear nowhere on the live site; they are listed in
MIGRATION.md.

The WXR export contains neither media binaries nor widgets, so both were
recovered from the live host before it is retired:
  - tools/fetch_media.py downloads all uploads, capping them at 2000px
  - tools/build_data.py scrapes the "Unsere Mitglieder" and
    "In Erinnerung" widgets into data/*.yaml

TablePress' six Termine tables became data/termine.yaml, rendered with
the newest year expanded and earlier years collapsed. Old permalinks are
not preserved (clean slugs, no redirects, as agreed).

Custom layouts, no third-party theme. Plain CSS, since the pinned Hugo
0.164.0 is the non-extended build and cannot compile Sass.

Verified: clean build with zero warnings, 718 internal links checked and
none broken, no surviving wp-content URLs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-28 19:20:11 +02:00
parent eccf30584a
commit bef5182545
188 changed files with 2770 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
{{- /* {{< figure "bild.jpg" "Bildunterschrift" >}} */ -}}
{{- $src := or (.Get "src") (.Get 0) -}}
{{- $caption := or (.Get "caption") (.Get 1) -}}
{{- with .Page.Resources.GetMatch $src -}}
{{- $img := .Resize "1200x webp q82" }}
<figure class="content-figure">
<a href="{{ .RelPermalink }}">
<img src="{{ $img.RelPermalink }}" width="{{ $img.Width }}" height="{{ $img.Height }}"
alt="{{ $caption | plainify }}" loading="lazy" decoding="async">
</a>
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{- else -}}
{{- warnf "figure: %q not found in %s" $src .Page.Path -}}
{{- end -}}
+32
View File
@@ -0,0 +1,32 @@
{{- /*
Responsive image grid.
{{< gallery "a.jpg" "b.jpg" >}} explicit, ordered
{{< gallery >}} every image resource of the page
Thumbnails link to the full-size original.
*/ -}}
{{- $page := .Page -}}
{{- $images := slice -}}
{{- if .Params -}}
{{- range .Params -}}
{{- with $page.Resources.GetMatch . -}}
{{- $images = $images | append . -}}
{{- else -}}
{{- warnf "gallery: %q not found in %s" . $page.Path -}}
{{- end -}}
{{- end -}}
{{- else -}}
{{- $images = $page.Resources.ByType "image" -}}
{{- end -}}
{{- if $images -}}
<div class="gallery">
{{- range $images }}
{{- $thumb := .Fill "400x300 Center webp q80" }}
{{- $full := .Resize "1600x webp q82" }}
<a class="gallery-item" href="{{ $full.RelPermalink }}">
<img src="{{ $thumb.RelPermalink }}" width="{{ $thumb.Width }}" height="{{ $thumb.Height }}"
alt="" loading="lazy" decoding="async">
</a>
{{- end }}
</div>
{{- end -}}
+15
View File
@@ -0,0 +1,15 @@
{{- /* {{< pdf "satzung.pdf" "Unsere Satzung" >}} — links a file in static/dokumente/. */ -}}
{{- $file := .Get 0 -}}
{{- $label := or (.Get 1) $file -}}
{{- $path := printf "static/dokumente/%s" $file -}}
{{- $size := "" -}}
{{- with (os.Stat $path) -}}
{{- $size = printf "%.1f MB" (div (float .Size) 1048576.0) -}}
{{- else -}}
{{- warnf "pdf shortcode: %s not found" $path -}}
{{- end -}}
<a class="pdf-link" href="{{ printf "/dokumente/%s" $file | relURL }}" download>
<span class="pdf-icon" aria-hidden="true">PDF</span>
<span class="pdf-label">{{ $label }}</span>
{{ with $size }}<span class="pdf-size">{{ . }}</span>{{ end }}
</a>