Archetypes dienen bei Hugo als Schablonen für neue Seiten.
Dadurch wird beim Aufruf von mit hugo new <verzeichnis><name>
eine neue Seite angelegt,
in der die Felder im Frontmatter schon vorhanden
oder sogar schon ausgefüllt sind.
Ein solcher Archetype liefert die Schablone für die einzelnen Ausgaben der ft:pedia.
Da die ft:pedia-Ausgaben alle im Verzeichnis content/ftpedia
liegen,
heißt der Archetype dafür per Default ftpedia.md
und liegt im Verzeichnis archetypes
.
Dieser Archetype erzeugt das hier
beschriebene Frontmatter.
Die Datei für neue ft:pedia-Ausgabe wird mit diesem Archetype durch
hugo new ftpedia/YYYY/YYYY-n/_index.md
angelegt.
Normalerweise existiert die Datei _index.md
für den Teaser in diesem
Verzeichnis bereits. In diesem Regelfall muss vor der Verwendung des
Archetypes das _index.md
vom Teaser manuell gelöscht werden.
Alternativ wird der Inhalt per Texteditor geändert.
Der Archetyp für ein Einzelheft ist wie folgt definiert:
---
hidden: true
layout: "issue"
title: "{{- $s := split .Name "-" }} {{- print (index $s 1) " / " (index $s 0)}}"
file: "ftpedia-{{ .Name }}.pdf"
publishDate:
date: {{ .Date }}
uploadBy:
- "ft:pedia-Redaktion"
---
Die Variable .Name
liefert den Teil YYYY-n
aus dem Pfadnamen, z. B.
“2019-3”, obwohl der Name der anzulegenden Datei “_index.md” lautet.
Aus diesem .Name
lässt sich mit etwas String-Zauberei der String “3 / 2019” erzeugen.
Dabei wird zunächst der Name entlang des Bindestriches zerlegt (split
),
wodurch ein Array bestehend aus den beiden Elementen “2019” und “3” entsteht.
Diese beiden Elemente werden jetzt von print
in umgekehrter Reihenfolge
und mit " / " verbunden als Titel ausgegeben.
Der Name der PDF-Datei (file
) muss unbedingt dem Schema “YYYY-n.pdf” folgen;
sonst wird entweder die Datei nicht gefunden,
oder der Name muss in der md-Datei händisch geändert werden.
Das Erscheinungsdatum publishDate
ist nach dem Anlegen der Datei
von Hand auszufüllen.
Diese Angabe berücksichtigt Hugo beim Bau der Seite; alles was in der Zukunft
liegt, wird nicht gebaut. Zusätzlich wertet unser Script diese Angabe als
Erscheinungsdatum aus, sobald die Ausgabe öffentlich wird.
Der Parameter date
wird durch die Variable .Date
automatisch mit dem aktuellen Datum belegt.
Dieser Parameter kennzeichnet das Hochladedatum der Datei. Er wird
derzeit nicht für den Bau der Seite verwendet, hilft aber für eventuelle
Rückfragen, wann die Datei bereitgestellt wurde.
Die Vorgabe uploadBy
zum hochladenden Nutzer rundet das Frontmatter ab.
Auch diese Angabe wird nicht öffentlich dargestellt.
Dieser Archetype ist für alle neuen ft:pedia-Ausgaben geeignet. Die Parameter im Frontmatter, die sich auf den Import der älteren Ausgaben beziehen, werden nicht angelegt. Das muss auch nicht sein, da alle älteren Ausgaben bereits von Hand eingepflegt wurden.
Beim Aufruf von hugo new
ist es möglich,
mit -k typ
einen Archetype anzugeben.
Diesen Befehl nutzen wir, um auch für die anderen Files, die für die einzelnen ft:pedia-Ausgaben anfallen,
eigene Archetypes zu verwenden.
Dies sind:
year.md
für die _index.md
im Jahrgangteaser.md
für einen Teaserdownload.md
für eine Download-Datei.Der Aufruf erfolgt jeweils mit
hugo new -k year ftpedia/YYYY/_index.md
hugo new -k teaser ftpedia/YYYY/YYYY-n/_index.md
hugo new -k download ftpedia/YYYY/YYYY-n/filename.md
Die so erzeugten Files für Teaser und Downloads sind allerdings noch nicht
fertig! Sie müssen noch zusätzlich bearbeitet werden.
Beispielsweise muss bei einer Download-Datei der Konstrukteur genannt werden und
die Datei-Endung ist zu setzen.
In den Content-Bereich kann man noch erklärenden Text schreiben, der allerdings
bei manchen Seiten nicht berücksichtigt wird.
Da der Aufruf von hugo new
auch ggf. noch fehlende Verzeichnisse erzeugt,
wird durch die Verwendung dieser Archetypes das Hochladen einer ft:pedia-Datei
deutlich erleichtert. Man kann das allerdings auch alles manuell erledigen,
wichtig ist der korrekte Dateipfad und die richtige Belegung der Frontmatter.
Eine neue ft:pedia-Ausgabe wird ein paar Tage vor ihrem Erscheinen durch einen
Teaser (Appetitmacher) angekündigt. Um das Anlegen der zugehörigen Datei zu
vereinfachen, gibt es das Archetyp für den Teaser. Wie bereits erklärt,
erledigt die Kommandozeile
hugo new -k teaser ftpedia/YYYY/YYYY-n/_index.md
die Vorarbeit. Bei Bedarf ist vorher noch der neue Jahrgang anzulegen.
Die erzeugte Datei _index.md
bekommt ihr Frontmatter aus dieser Definition:
---
hidden: true
layout: "teaser"
title: "{{- $s := split .Name "-" }} {{- print (index $s 1) " / " (index $s 0)}}"
launchDate:
date: {{ .Date }}
uploadBy:
- "ft:pedia-Redaktion"
---
Generell wird diese neue Seite nie im Seitenmenü angezeigt (hidden: true
).
Das Layout ist, wie sollte es auch anders sein, für den Teaser gewählt.
Die Stringmagie für den Titel entspricht genau der aus der Einzelausgabe
(s. o.).
Speziell angelegt wird das Erscheinungsdatum launchDate
. Da Hugo nicht
wissen kann, wann die neue ft:pedia erscheinen wird, muss diese Angabe von Hand
nachgetragen werden, sobald die Datei angelegt ist.
Abschließend wird noch das Hochladedatum (date
) eingestellt und der
verantwortliche Nutzer in uploadBy
eingetragen.
Dieser Archetyp erzeugt zunächst ein ungültiges Frontmatter! Es ist zwingend notwendig, nach dem Anlegen der Datei noch per Texteditor das Erscheinungsdatum einzutragen. Geschieht dies nicht, verweigert Hugo den Bau der Seite mit einer entsprechenden Fehlermeldung.
Möglicherweise hilft ein geänderter Aufruf weiter, laut
hugo-Dokumentation
lässt sich neuer Inhalt unmittelbar per Texteditor ergänzen:
hugo new -k teaser ftpedia/YYYY/YYYY-n/_index.md --editor vim
Im Beispiel musste vim
herhalten, es geht wohl auch jeder andere Editor, so
vorhanden.