Archetypes
[TOC]
Was sind Archetypes?
Archetypes sind Vorlagen, die bei der Erstellung neuer Inhalte verwendet werden. Archetypes sind Vorlagendateien im .md
- Format, die im Verzeichnis archetypes/
hinterlegt sind. Typischerweise ist der Name der Datei defaut.md
und enthält:
- einen Titel
title:
(abgeleitet aus dem Dateinamen), - das Datum
date:
und - den Eintrag
draft = true
(die Site ist als Entwurf gekennzeichnet und wird nicht generiert).
In der Datei default.md
sieht es so aus:
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
Ergänzt habe ich die Einträge für ein Inhaltsverzeichnis toc: true
sowie Tags tags
also
toc: true
tags: [blog, posts, tutorial, hugo]
Diese Vorlage sorgt dafür, das beim Erstellen eines neuen Beitrags z.B.
# hugo new posts/archetypes.md
die Site archetypes.md
mit folgendem Header-Bereich ausgegeben wird:
title: "Archetypes"
date: 2019-03-14T10:38:08+01:00
draft: true
toc: true
tags: [blog, posts, tutorial, hugo]
Photo by Mords Saligumba on Unsplash
Mehrere Vorlagendateien
Der Befehl
# hugo new posts/neue-Datei.md
nutzt für Content-Bereich posts/
die Vorlage im Verzeichnis archetypes/
, die alle neuen Sites standardmäßig auf der Grundlage der default.md
- Datei erstellt oder speziell für Beiträge (posts.md
) vorgesehen ist.
Wenn das gewählte keine archetypischen Dateien enthält, wird hugo auch im Ordner /themes
nachschlagen.
# hugo new posts/my-first-post.md
Damit wird eine neue Inhaltsdatei in content/posts/my-first-post.md
unter Verwendung der ersten gefundenen Archetype-Datei erstellt:
archetypes/posts.md
archetypes/default.md
themes/my-theme/archetypes/posts.md
themes/my-theme/archetypes/default.md
In den letzten beiden Fällen muss das gewählte Theme natürlich ein Verzeichnis /archetypes
haben.
Erstellen einer neuen Archetype-Vorlage
Ein fiktives Beispiel für die Sektion Newsletter und die Archetyp-Datei archetypes/newsletter.md
. Eine neue Datei mit dem Namen archetypes/newsletter.md
erstellen und folgendes eingeben:
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---
**Insert Lead paragraph here.**
## New Cool Posts
{{ range first 10 ( where .Site.RegularPages "Type" "cool" ) }}
* {{ .Title }}
{{ end }}
Wenn man nun einen neuen Newsletter erstellt mit:
# hugo new newsletter/the-latest-cool.stuff.md
wird ein neuer Newsletter-Typ einer Inhaltsdatei - z.B. hier - erzeugt, der auf der Archetype-Vorlage basiert.
Hinweis: Die Website wird nur erstellt, wenn die Site in der Archetype-Datei verwendet wird, was bei großen Websites zeitaufwändig sein kann.
Der obige Newsletter-Typ Archetype veranschaulicht, wie die vollständige Site und alle Template-Funktionen von Hugo in der Archetype-Datei verwendet werden können.
Verzeichnisbasierte Archetypes
Seit Hugo 0.49 können komplette Verzeichnisse als Archetype-Vorlagen verwendet werden. Beispielfür ein Archetype-Verzeichnis:
archetypes
├── default.md
└── post-bundle
├── bio.md
├── images
│ └── featured.jpg
└── index.md
# hugo new --kind post-bundle posts/my-post
Damit wird ein neues Verzeichnis in /content/posts/my-post
mit dem gleichen Dateisatz wie im Ordner /post-bundle archetypes
erstellt.
Photo by Jens Johnsson on Unsplash