Dieser Post ist Teil der Serie Changelog, und das ist der 5. Artikel in der Serie. Einen Überblick über alle Artikel der Serie findest du hier.

Den direkten Vorgänger-Post findest du hier.

Den direkten Nachfolger-Post findest du hier.

Eine Neuerung auf meinem Blog: Ab sofort kann ich Post-Serien auf meinem Blog zusammenfassen.

Voraussetzung von Hugo

Hugo schafft bereits sehr gute Voraussetzungen dafür: Die Tags sind bereits sogenannte Taxonomien, und in der Welt der Taxonomien kann man sich austoben so viel man möchte. Bei mir existiert jetzt eine weitere Taxonomie mit dem Namen series.

Informationen über die Serie sammeln

Hier kommt die Möglichkeit zum eigenen Web Development ins Spiel, und hier wird die Sache auch entsprechend anstrengend. Das Requirement war eigentlich denkbar einfach: Wenn der Post Teil einer Serie ist, soll es einen Link auf die Serien-Übersicht (also /<sprache>/series/<serien-name>) geben, und Links zum jeweils vorherigen und nächsten Artikel der Serie. Die Umsetzung war dann etwas komplizierter…

  • Der Serienname lässt sich simpel herausfinden, da Hugo das direkt mitgibt: {{ .Parms.series }}
  • Alle Artikel der Serien muss man schon per Query zusammensuchen: where .Site.RegularPages "Params.series" $seriesName.
    Bestenfalls macht man dann noch eine Sortierung nach Datum: {{ sort $seriesPosts "Date" }}
  • Als nächstes suche ich mir den Index des aktuellen Artikels:
    1
    2
    3
    4
    5
    6
    
    {{ $index := -1 }}
    {{ range $i, $p := $seriesPosts }}
      {{ if eq $p.RelPermalink $current.RelPermalink }}
        {{ $index = $i }}
      {{ end }}
    {{ end }}
    
    Die HTML Templating Syntax von Hugo ist halt nur eingeschränkt zum Programmieren entwickelt, das merkt man hier stark.
  • Die letzte Challenge war das Finden der korrekten URL für die Übersicht-Seite. Das ist am Ende so gelungen: {{ site.GetPage( printf "/series/%s" $seriesName ).RelPermalink }}. Beachte dass die Sprache hier nicht benötigt wird, da wir den relativen Permalink verwenden!

CSS Magic!

Relevante Teile der Formatierung hat PaperMod bereits übernmomen, insbesondere das Bereitstellen der Übersicht-Seite für eine Serie, oder eine Sammel-Seite wo man alle Serien findet. Ich musste also nur noch die Info-Box am Anfang des Posts erzeugen. Das CSS dafür bleibt gerne der lesenden Person zur Übung überlassen; vielleicht poste ich sie auch später einmal…

Resultat

Das Resultat lässt sich zum Beispiel auf dieser Seite hier sehen! Dieser Post ist Teil der Changelog Serie.