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 archetypeserstellt.

Photo by Jens Johnsson on Unsplash