How to use Hugo data files
Hugo Data Files lassen sich wie folgt verwenden.
Data Dateien werden im data
Verzeichnis abglegt und werden in den Templates über .Site.Data.<DateiName>
angesprochen. Die Verzeichnisstruktur innerhlab von Data muss eingehalten werden. Mehr Informationen zu den Data-Templates gibt es hier: https://gohugo.io/templates/data-templates/#readout
Im Verzeichnis data
legst du dateien im format json
,toml
oder yaml
ab. Das Format und der Inhalt ist dir überlassen. Als Beispiel habe ich hier eine Bookmark-Liste. Diese Datei könnte sich hier befinden: data/bookmarks/windows.yaml
.
name: Windows Bookmarks links: - title: Windows 10 Ameliorated url: https://ameliorated.info/ desc: Windows 10 Minus The Spyware + Added Stability and Security - title: Windows 10 ISO Download Link url: https://www.microsoft.com/software-download/windows10ISO
Du könnenkannst mehrere Dateien im Verzeichnis data
ablegen. Um den Inhalt aller Dateien anzuzeigen, verwnden wir einen Shortcode. Dieser Shortcode nimmt alle Dateien im Ordner data/bookmarks
und sortiert sie nach Namen aufsteigend.
Alle Dateien einbinden
Inhalt der Datei layout/shortcodes/bookmarks.html
:
{ $file := index .Site.Data.bookmarks }} {{ range sort $file "name" "asc" }} <h2>{{ .name }}</h2> <ul> {{ range sort .links "title" "asc" }} <li> <a href="{{ .url }}" target="_blank" rel="noopener">{{ .title }}</a> {{ if .desc }} – <em>{{ .desc }}</em> {{ end }} </li> {{ end }} </ul> {{ end }}
Der Shortcode hierfür ist einfach nur bookmarks
Nur eine Datei einbinden
Willst du nur eine bestimmte Datei per Shortcode einbinden, geht das so:
Inhalt der Datein layouts/shortcode/bookmark.html
:
{{ $file := index .Site.Data.bookmarks ( .Get 0 ) }} {{ with $file }} <ul> {{ range sort .links "title" "asc" }} <li> <a href="{{ .url }}" target="_blank" rel="noopener">{{ .title }}</a> {{ if .desc }} – <em>{{ .desc }}</em> {{ end }} </li> {{ end }} </ul> {{ end }}
Der Shortcode für dieses Beispiel ist bookmark windows