updated: | 2024 20. November |
published: | 2021 13. January |
Gohugo Funktionen, Methoden und Variablen
Zusammenstellung und Kurzinformation zu einigen ausgewählten Gohugo Funktionen, Methoden und Variablen.Eine vollständige Liste aller Funktionen und Methoden sind auf der Gohugo Seite zu finden.
Eigene Funktion
In Gohugo ist es möglich eigene Funktionen zu schreiben und sie in Markdowndateien (*.md)
oder Shortcodes (*.html)
zu verwenden.
Zufallszahl generieren {{<random>}}
Als Beispiel für eine eigene Funktion wird eine Funktion zum Generieren einer Zufallszahl {{<random>}}
eingerichtet.
Folgende Dateien mit gleichem Namen werden in unterschiedliche Verzeichnisse angelegt.
{{ $seed := "foo" }}
{{ $random := delimit (shuffle (split (md5 $seed) "" )) "" }}
{{ $random }}
{{ partial "random" . }}
In der Shortcodesdatei wird einfach die Datei ./layouts/partials/random.html
aufgerufen. Damit ist die Funktion random
für Markdown- und für Html-Dateien verfügbar und kann wie folgt aufgerufen werden.
{{<random>}} // Aufruf in Markdown
{{ partial "random" . }} // Aufruf in Html
Ergebnis:
a84dcccb26d585dfc4ff8e4dccbca14eAnwendungsbeispiel
Der Zufallsgenerator findet hervoragend Anwendung im automatischen generieren von eindeutigen Kennzeichen bei der Verwendung der Html-Elemente <input>
und <label>
.
Eine beispielhafte Anwendung ist: ./layouts/shortcodes/expand.html
{{ $zufall := partial "random" . }}
...
<input id="expand.{{replaceRE "\\s" "" $zufall}}" ... >
<label for="expand.{{replaceRE "\\s" "" $zufall}}" ... >
...
Hinweis: Die in der Variablen $zufall
enthaltene Zahl wird mit einem Leerzeichen (whitespace) übergeben.
Die Funktion {{replaceRE "\\s" "" $zufall}}
ersetzt alle Leerzeichen "\\s"
mit ""
- nichts -.
Zeit- und Datumsangaben
Gohugo bietet eine eigene Time-Methode für Zeit- und Datumsangaben an. Insbesondere sind Datumsangaben der Seiten und Dateien interessant.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.Date}} | 2021-01-13 09:20:15 +0100 CET |
{{.Page.PublishDate}} | 2021-01-13 09:20:15 +0100 CET |
{{.Page.Lastmod}} | 2024-11-20 16:52:02 +0100 CET |
{{.Page.File.Path}} | edv/gohugo/hilfe/funktion.md |
{{$file := os.Stat (.Page.File.Path)}} | |
{{$file.ModTime}} | 2025-01-04 22:00:40.078619139 +0100 CET |
Zur Datumsformatierung siehe folgende Tabelle.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.Date}} | 2021-01-13 09:20:15 +0100 CET |
{{.Page.Date.Format "January 2, 2006"}} | January 13, 2021 |
{{.Page.Date.Format "02. Jan 2006 15:04"}} | 13. Jan 2021 09:20 |
{{.Page.Date.Format "02012006 15:04"}} | 13012021 09:20 |
{{.Page.Date.Format "20060102"}} | 20210113 |
Ausgabe des Datums mit .now | |
{{.now.Format "20060102 15:04"}} | 20250311 22:02 |
Gohugo Funktionen
Hinweis:
Die aufgeführten Funktionen können in entsprechenden *.html
Dateien angewendet und aufgerufen werden. In Markdowndateien *.md
ist das nicht möglich, bzw. nur über den Umweg eines entsprechenden Shortcodes (Stand: 01.2021):
GetPage
.GetPage
liefert den Path einer Seite (*.md
) zurück.
{{ $variable01 := .Site.GetPage "funktion.md" }}
{{ $variable01 }}
urls.Parse
urls.Parse splitet eine URL (Uniform Resource Locator) in seine einzelnen Bestandteile.
{{ $url := "https://www.vermessungsprogramme.de/test/system/gohugo/#Ueberschrift" }}
{{ $parse := urls.Parse $url }}
{{ $parse.Scheme }}
{{ $parse.Host }}
{{ $parse.Path }}
{{ $parse.Fragment }}
Ergebnis (tabellarisch):
$parse.Scheme | https |
$parse.Host | www.vermessungsprogramme.de |
$parse.Path | /test/system/gohugo/ |
$parse.Fragment | Ueberschrift |
readDir
Die Funktion readDir listet alle Dateien und Verzeichnisse auf.
{{ $files := readDir "./content" }}
{{ range $files }}
{{ .Name }}
{{ end }}
Ergebnis (tabellarisch):
edv |
gaa |
geo |
impressum.md |
kontakt.md |
notice |
search.md |
status.md |
test.md |
version.txt |
os.Stat
Für umfangreiche Datei- und Verzeichnisinformationen stehen weitere Funktionen von os.Stat bereit.
{{ $files := readDir "./content" }}
{{ range $files }}
{{ .Name }}
{{ .IsDir }}
{{ .Size }}
{{ .ModTime }}
{{ end }}
Ergebnis (tabellarisch):
.Name | .IsDir | .Size | .Modtime (zuletzt geändert) | {{path.Ext .Name }} |
---|---|---|---|---|
edv | true | 4096 | 2025-01-04 22:00:40.082619157 +0100 CET | |
gaa | true | 4096 | 2025-01-04 22:00:40.089619188 +0100 CET | |
geo | true | 4096 | 2025-01-16 23:10:24.582798313 +0100 CET | |
impressum.md | false | 337 | 2025-01-04 22:00:40.090619193 +0100 CET | .md |
kontakt.md | false | 187 | 2025-01-04 22:00:40.090619193 +0100 CET | .md |
notice | true | 4096 | 2025-02-21 22:58:34.941375655 +0100 CET | |
search.md | false | 183 | 2025-01-04 22:00:40.090619193 +0100 CET | .md |
status.md | false | 1215 | 2025-02-21 23:08:26.408364791 +0100 CET | .md |
test.md | false | 314 | 2025-02-21 22:52:34.278970169 +0100 CET | .md |
version.txt | false | 13 | 2025-03-11 22:02:46.488129461 +0100 CET | .txt |
Die Variable .ModTime
der Funktion os.Stat
gibt die letzte Modifizierungszeit der Datei an. Diese ist identisch mit der im Dateimanager angegebenen Zeit.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.File.Path}} | edv/gohugo/hilfe/funktion.md |
{{$file := os.Stat (.Page.File.Path)}} | |
{{$file.ModTime}} | 2025-01-04 22:00:40.078619139 +0100 CET |
Scratch - newScratch
.Scratch
dient zum Speichern und Bearbeiten von Daten. Das folgende Beispiel zeigt die Verwendung von .Scratch.Set
und .Scratch.Add
.
Durch die Funktion .Scratch.Get
wird letztendlich die Variable XXX
ausgegeben.
{{ $var01 := path.Dir .Page.File }}
{{ $.Scratch.Set "XXX" $var01 }}
{{ $.Scratch.Get "XXX" }}
{{ $.Scratch.Set "ZZZ" $var01 }}
{{ $.Scratch.Add "ZZZ" "/image" }}
{{ $.Scratch.Get "ZZZ" }}
Ergebnis:
{{ $.Scratch.Get "XXX" }} | . |
{{ $.Scratch.Get "ZZZ" }} | ./image |
Hinweis: Es kann vorkommen das .Scratch nicht funktioniert und Gohugo mit einer Fehlermeldung den Dienst verweigert.
execute of template failed at <$.Scratch.Set>: can’t evaluate field Scratch in type goldmark.linkContext
Verwende in diesem Fall die Funktion newScratch
. Mit der Funktion newScratch
kann jeder Variablen auch eine Scratch-Instanz zugewiesen werden.
{{ $var01 := path.Dir .Page.File }}
{{ $storage := newScratch }}
{{ $storage.Set "XXX" $var01 }}
{{ $storage.Get "XXX" }}
{{ $storage.Add "XXX" "/image" }}
Path Funktionen
Am Beispiel des Rückgabewertes der Methode .Page.File werden die Ergebnisse der Path-Funktion in der Tabelle gezeigt. Besonders interessant ist die Funktion path.Clean . Diese ersetzt den in Windows verwendeten Backslash in ein Slash und löscht Doppelslash.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.File}} | funktion |
{{path.Base (.Page.File)}} | funktion |
{{path.Clean (.Page.File)}} | funktion |
{{path.Clean "a\\b//x/zz/"}} | a\b/x/zz |
{{path.Dir (.Page.File)}} | . |
{{path.Ext (.Page.File)}} | |
{{path.Join "yyy" (.Page.File)}} | yyy/funktion |
Die Funktion path.Split unterteilt in Verzeichnisnamen und Dateinamen.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.File}} | funktion |
{{$dirFile := path.Split (.Page.File)}} | |
{{$dirFile.Dir}} | |
{{$dirFile.File}} | funktion |
Strings
Beispiele um Strings zu verarbeiten.
TrimRight 1 | Ergebnis |
---|---|
{{ $var01 := .Page.Permalink }} | |
{{ $var01 }} | https://www.vermessungsprogramme.de/edv/gohugo/hilfe/funktion/ |
{{ strings.TrimRight "tion/" $var01 }} | https://www.vermessungsprogramme.de/edv/gohugo/hilfe/funk |
TrimRight 2 | Ergebnis |
---|---|
{{$var02 := .Page.File.BaseFileName}} | |
{{$var02}} | funktion |
{{strings.TrimRight $var02 (strings.TrimRight "/" $var01)}} | https://www.vermessungsprogramme.de/edv/gohugo/hilfe/ |
String Count | Ergebnis |
---|---|
{{"Hello, world" | strings.RuneCount}} | 12 |
{{"Hello, world" | countrunes}} | 11 |
{{"aaabaab" | strings.Count "a"}} | 5 |
{{"aaabaab" | strings.Count "aa"}} | 2 |
{{"aaabaab" | strings.Count "aaa"}} | 1 |
{{"aaabaab" | strings.Count ""}} | 8 |
{{"aaab aab" | strings.Count ""}} | 8 |
FindRE - Suchen und finden
Die Funktion FindRE
sucht eine Zeichenfolge mittels regulärer Ausdrücke in einer Datei oder einem String und gibt das Ergebnis als range
zurück.
Ein regulärer Ausdruck (engl.: Regular expressions) ist die Beschreibung einer bestimmten Menge von Zeichen in einer Folge.
Beispiel 1
Das Beispiel <a href.*?>(.|\n)*?</a>
sucht alle Hyperlinks in einer Html-Datei. Also alles, was mit <a href
beginnt und mit </a>
endet.
{{ $findReturn := findRE `<a href.*?>(.|\n)*?</a>` (readFile "./themes/mab-3.0/layouts/partials/header.html" ) }}
<!-- Anzahl gefundener Übereinstimmungen -->
{{ $count := len $findReturn }}
<!-- Ausgabebeispiel 1 per index -->
{{ $out := index $findReturn 0 }} {{ $out }}
{{ $out := index $findReturn 1 }} {{ $out }}
{{ $out := index $findReturn 2 }} {{ $out }}
<!-- Ausgabebeispiel 2 per range -->
{{ range $element, $findReturn }}
{{ $element }}
{{ end }}
<!-- Ausgabebeispiel 3 per range und increment -->
{{ range $i, $element := $findReturn }}
{{ $i }} {{ $element }}
{{ end }}
Ergebnis Ausgabebeispiel 1 per index |
---|
<a href="{{ .Site.BaseURL }}" class="logo" title="Home"><img src="/bilder/home4.png" class="logo" alt="Home"></a> |
<a href="#top" class="logo" title="Top"><img src="/bilder/arrow-up.png" class="logo" alt="top"></a> |
<a href="#top" class="logo" title="Top"><img src="/bilder/arrow-up.png" class="logo" alt="top"></a> |
Ergebnis Ausgabebeispiel 2 per range |
---|
<a href="{{ .Site.BaseURL }}" class="logo" title="Home"><img src="/bilder/home4.png" class="logo" alt="Home"></a> |
<a href="#top" class="logo" title="Top"><img src="/bilder/arrow-up.png" class="logo" alt="top"></a> |
<a href="{{.Site.BaseURL}}/search" class="logo" title="Suchen"><img src="/bilder/lupe4.png" class="logo" alt="Search"></a> |
<a href="{{ .URL }}">{{- .Name -}} <!--span class="icon-desktop-menu">▷</span--></a> |
<a href="{{ .URL }}">{{ .Name }} <span class="icon-desktop-menu">▷</span></a> |
<a href="{{ .URL }}">{{ .Name }}</a> |
<a href="{{ .URL }}">{{ .Name }}</a> |
Ergebnis Ausgabebeispiel 3 per range und increment | |
---|---|
0 | <a href="{{ .Site.BaseURL }}" class="logo" title="Home"><img src="/bilder/home4.png" class="logo" alt="Home"></a> |
1 | <a href="#top" class="logo" title="Top"><img src="/bilder/arrow-up.png" class="logo" alt="top"></a> |
2 | <a href="{{.Site.BaseURL}}/search" class="logo" title="Suchen"><img src="/bilder/lupe4.png" class="logo" alt="Search"></a> |
3 | <a href="{{ .URL }}">{{- .Name -}} <!--span class="icon-desktop-menu">▷</span--></a> |
4 | <a href="{{ .URL }}">{{ .Name }} <span class="icon-desktop-menu">▷</span></a> |
5 | <a href="{{ .URL }}">{{ .Name }}</a> |
6 | <a href="{{ .URL }}">{{ .Name }}</a> |
Beispiel 2
In der Variablen SuchString
wird nur der Teil in der geschweiften Klammer extrahiert.
Der verwendete reguläre Ausdruck
{[[:word:][:space:]]*}
sucht ein oder mehrere der Zeichen [0-9A-Za-z_] [\t\n\v\f\r ]
, die sich innerhalb der geschweiften Klammer befinden.
{{- $SuchString := "Erster Teil des Strings {Zweiter Teil des Strings}" -}}
{{- $step1 := findRE `{[[:word:][:space:]]*}` $SuchString -}}
{{- if ne (len $step1) 0 -}}
{{- $step2 := index $step1 0 -}}
{{- $step3 := trim $step2 "{}" -}}
<br>SuchString = {{ $SuchString }}
<br>
<br>Teil1 = {{ $step1 }}
<br>Teil2 = {{ $step2 }}
<br>Teil3 = {{ $step3 }}
<br>
{{- range $index, $value := split $step3 " " -}}
{{- if ne $value "" -}}
<br>Wert {{ $index }} = {{ $value }}
{{- end -}}
{{- end -}}
{{- end -}}
Ergebnis:
SuchString = Erster Teil des Strings {Zweiter Teil des Strings}
Teil1 = [{Zweiter Teil des Strings}]
Teil2 = {Zweiter Teil des Strings}
Teil3 = Zweiter Teil des Strings
Wert 0 = Zweiter
Wert 1 = Teil
Wert 2 = des
Wert 3 = Strings
Gohugo Methoden
Für die Verwendung in Webseiten stellt Gohugo eine Vielzahl von Methoden zur Verfügung.
Site
Mit dem englischen Begriff Site ist im deutschen Sprachgebrauch eine Webseite gemeint. Die Site-Variable dient dem Zugriff auf globale Variablen eines Webseitenprojektes.
Aufruf in *.html | Ergebnis |
---|---|
{{.Site.AllPages}} | Pages(384) |
{{.Site.BaseURL}} | https://www.vermessungsprogramme.de/ |
{{.Site.BuildDrafts}} | false |
{{.Site.Copyright}} | |
{{.Site.Data}} | map[sample_tomlTable:map[row:[map[data:[Animal Sound yupi]] map[data:[Cat Meow blub]] map[data:[Dog Woof tata]] map[data:[Dog Woof tata nenene]]] table:map[]]] |
{{.Site.Home}} | / |
{{.Site.Language}} | de |
{{.Site.Language.Lang}} | de |
{{.Site.Language.LanguageName}} | |
{{.Site.Language.Weight}} | 0 |
{{.Site.Lastmod}} | 2025-03-10 21:27:48 +0100 CET |
{{.Site.Pages}} | Pages(384) |
{{.Site.RegularPages}} | Pages(147) |
{{.Site.Sections}} | Pages(4) |
{{.Site.Taxonomies}} | TaxonomyList(1) |
{{.Site.Title}} | Manual |
{{.Site.Params}} | map[author:map[copyright:© 2024 Andre <a href="https://creativecommons.org/licenses/by/4.0/">Some rights reserved</a>. email:test@test.com name:mab] debug:false version:20250311-01 viewtestsite:false] |
{{.Site.Params.mainSections}} | [edv] |
{{.Site.Menus}} | map[main:[0xc000249ea0 0xc000249a40 0xc0002ce380 0xc0002cea80]] |
Page
Mit der Methode .Page
kann auf Eigenschaften einer Markdown-Inhaltsseite (*.md)
zugegriffen werden.
Page.File
Die Variable .Page.File gibt Informationen über die Markdowndatei zurück.
Aufruf in *.html | Ergebnis |
---|---|
{{ .Page.File }} | funktion |
{{ .Page.File.Path }} | edv/gohugo/hilfe/funktion.md |
{{ .Page.File.Dir }} | edv/gohugo/hilfe/ |
{{ .Page.File.LogicalName }} | funktion.md |
{{ .Page.File.BaseFileName }} | funktion |
{{ .Page.File.Ext }} | md |
{{ .Page.Language.Lang }} | de |
{{ .Page.File.UniqueID }} | a924ef826a70d30763816a9601cfb5a1 |
{{ .Page.File.TranslationBaseName }} | funktion |
{{ .Page.File.ContentBaseName }} | funktion |
Page.GitInfo
Mit der Variablen .GitInfo
kann auf Information der Git-Versionsverwaltung
zugegriffen werden, sofern man Git in einem Gohugo-Projekt verwendet.
Die Information beziehen auf die angegebene Markdown-Inhaltseite (*.md)
.
Aufruf in *.html | Ergebnis |
---|---|
{{.Page.GitInfo}} | {ec737a5393d4347360a19e06b7796e2de1073f67 ec737a5 RSS-Feed andre andre@localhost 2024-11-20 16:52:02 +0100 CET 2024-11-21 13:37:29 +0100 CET } |
{{.Page.GitInfo.AbbreviatedHash}} | ec737a5 |
{{.Page.GitInfo.AuthorName}} | andre |
{{.Page.GitInfo.AuthorEmail}} | andre@localhost |
{{.Page.GitInfo.AuthorDate}} | 2024-11-20 16:52:02 +0100 CET |
{{.Page.GitInfo.Hash}} | ec737a5393d4347360a19e06b7796e2de1073f67 |
{{.Page.GitInfo.Subject}} | RSS-Feed |
{{.Page.GitInfo.CommitDate}} | 2024-11-21 13:37:29 +0100 CET |
{{.Page.GitInfo.Body}} |
Folgender Schalter muss in der Datei config.toml
gesetzt sein.
enableGitInfo = true
Page.Params
Page.Params beinhaltet alle Variablen im Kopf einer Markdowndatei.
+++
tags = ["dev", "gohugo", "funktion"]
zusammenfassung = "Zusammenstellung und Kurzinformation zu einigen ausgewählten Gohugo Funktionen und Variablen."
title = "Gohugo Funktionen und Variablen"
submenu = "false"
date = "2021-01-13T09:20:15+01:00"
type = "article"
+++
Der Zugriff kann per Einzelabruf, per Range oder zusammen erfolgen.
Ausgabe .Page.Params (einzeln) | Ergebnis |
---|---|
{{ .Page.Params.tags }} | [dev gohugo funktion] |
{{ .Page.Params.type }} | article |
{{ .Page.Params.title }} | Gohugo Funktionen, Methoden und Variablen |
{{ .Page.Params.submenu }} | false |
usw. |
Ausgabe per range) | |
---|---|
date | 2021-01-13 09:20:15 +0100 CET |
draft | false |
iscjklanguage | false |
lastmod | 2024-11-20 16:52:02 +0100 CET |
publishdate | 2021-01-13 09:20:15 +0100 CET |
submenu | false |
tags | [dev gohugo funktion] |
title | Gohugo Funktionen, Methoden und Variablen |
type | article |
zusammenfassung | Zusammenstellung und Kurzinformation zu einigen ausgewählten Gohugo Funktionen, Methoden und Variablen. |
Ausgabe .Page.Params (zusammen) |
---|
map[date:2021-01-13 09:20:15 +0100 CET draft:false iscjklanguage:false lastmod:2024-11-20 16:52:02 +0100 CET publishdate:2021-01-13 09:20:15 +0100 CET submenu:false tags:[dev gohugo funktion] title:Gohugo Funktionen, Methoden und Variablen type:article zusammenfassung:Zusammenstellung und Kurzinformation zu einigen ausgewählten Gohugo Funktionen, Methoden und Variablen.] |
Weitere Page.Variablen
Aufruf in *.html | Ergebnis |
---|---|
{{ .Page.Ancestors }} | Pages(4) |
{{ .Page.Aliases }} | [] |
{{ .Page.IsHome }} | false |
{{ .Page.IsNode }} | false |
{{ .Page.IsPage }} | true |
{{ .Page.IsSection }} | false |
{{ .Page.BundleType }} | |
{{ .Page.IsTranslated }} | false |
{{ .Page.Type }} | article |
{{ .Page.WordCount }} | 0 |
{{ .Page.Kind }} | page |
{{ .Page.Language }} | de |
{{ .Page.Keywords }} | [] |
{{ .Page.LinkTitle }} | Gohugo Funktionen, Methoden und Variablen |
{{ .Page.Permalink }} | https://www.vermessungsprogramme.de/edv/gohugo/hilfe/funktion/ |
{{ .Page.RelPermalink }} | /edv/gohugo/hilfe/funktion/ |
{{ .Page.PlainWords }} | [] |
{{ .Page.Resources }} | [] |
{{ .Page.Draft }} | false |
{{ .Page.Date }} | 2021-01-13 09:20:15 +0100 CET |
{{ .Page.Lastmod }} | 2024-11-20 16:52:02 +0100 CET |
{{ .Page.ExpiryDate }} | 0001-01-01 00:00:00 +0000 UTC |
{{ .Page.PublishDate }} | 2021-01-13 09:20:15 +0100 CET |
{{ .Page.Section }} | edv |
{{ .Page.Sections }} | Pages(0) |
{{ .Page.FirstSection }} | /home/andre/Programmierung/hugo/work/content/edv/_index.md |
{{ .Page.CurrentSection }} | /home/andre/Programmierung/hugo/work/content/edv/gohugo/hilfe/_index.md |
{{ .Page.Parent }} | /home/andre/Programmierung/hugo/work/content/edv/gohugo/hilfe/_index.md |