updated: | 2022 03. November |
published: | 2020 19. October |
Parameterübergabe in Gohugo
Seitenweise Parameterübergabe über Gohugo Funktionen.Zugriff auf Seitenparameter in einer Markdowndatei *.md
Im Kopf einer Markdowndatei (*.md) sind Parameter oder Variablen deklariert, auf die im Text mit {{<param xyz>}}
zugegriffen werden kann.
+++
date = "2020-10-19 08:48:53 +0200 CEST"
thumbnail = "tumb.test.jpg"
schalter = 1001
[company]
name = "mycompany"
addr = "my address"
+++
Der Zugriff auf die Seitenparameter im Text der Mardowndatei erfolgt mit geschweiften Klammern.
Parameter date = {{<param date>}}
Parameter company.name = {{<param "company.name">}} Zugriff mit Anführungszeichen
Parameter company.name = {{<param company.name>}} Zugriff ohne Anführungszeichen
Parameter company.name = {{<param company.addr>}}
Parameter schalter = {{<param schalter>}}
Ergebnis:
Der Zugriff auf die Seitenparameter im Text der Mardowndatei erfolgt mit geschweiften Klammern.
Parameter date = 2020-10-19 08:48:53 +0200 CEST
Parameter company.name = mycompany Zugriff mit Anführungszeichen
Parameter company.name = mycompany Zugriff ohne Anführungszeichen
Parameter company.addr = my address
Parameter schalter = 1001
Um in einer Shortcodedatei oder in einer anderen HTML-Datei unterhalb des Verzeichnisses themes\...\layouts
auf die Parameter im Kopf der Markdowndatei zu zugreifen,
muss du folgenden Code anwenden:
{{ if .Page.Params.company }}
{{ $name := .Page.Param "company.name" }}
{{ $addr := .Page.Param "company.addr" }}
{{ $name }} {{ $addr }}
{{ end }}
Zugriff auf Parameter aus der Konfigurationsdatei config.toml
In der Konfigurationsdatei config.toml
können global Parameter definiert werden.
[Params]
param01 = true
<!-- Ist der Parameter param01 in der config.toml definiert -->
{{- if .Site.Params.param01 -}}
dann mach dieses hier ...
{{- end -}}
Parameterübergabe von Markdowndatei (*.md) in eine shortcodesdatei (*.html)
Parameter können aus einer Mardowndatei *.md
in eine Shortcodesdatei ./shortcodes/sampleparameter.html
übergeben werden und verschiedene Funktionen ausführen.
Die Übergabe der Parameter kann in zwei verschiedenen Versionen erfolgen. Zum einen per Index (fortlaufender Nummer) und zum anderen per Name.
Parameterübergabe mittels fortlaufender Nummer (index)
{{ $id1 := (index .Params 0) }}
{{ $id2 := (index .Params 1) }}
Übergabeparameter 1 = {{ $id1 }}
Übergabeparameter 2 = {{ $id2 }}
Zugriff auf die Parameter der aufrufenden Markdowndatei.
{{ if .Page.Params.company }}
{{ $name := .Page.Param "company.name" }}
{{ $addr := .Page.Param "company.addr" }}
{{ $name }} {{ $addr }}
{{ end }}
Aufruf der Shortcodedatei sampleparameter.html
in Markdown und Übergabe der Parameter als fortlaufende Nummer.
{{<sampleparameter huhu1 hahah2>}}
Ergebnis: Das von Gohugo erzeugte statische Html sieht dann so aus:
Übergabeparameter 1 = huhu1
Übergabeparameter 2 = hahah2
Zugriff auf die Parameter der aufrufenden Markdowndatei.
mycompany my address
Parameterübergabe mit definiertem Namen
{{ $id1 := .Get "ParameterName01" }}
{{ $id2 := .Get "ParameterName02" }}
{{/* Mit vorhergehender Prüfung des Parameters */}}
{{ with .Get "ParameterName01" }}
{{ $id1 := . }}
Parameter 01 vorhanden: {{ $id1 }}
{{ else }}
Parameter Nicht vorhanden
{{ end }}
{{/* Mit vorhergehender Prüfung des Parameters und globaler Verfügbarkeit */}}
{{ with .Get "ParameterName01" }}
{{ $.Scratch.Set "id" . }}
Parameter 01 vorhanden: {{ $.Scarch.Get "id" }}
{{ else }}
Parameter Nicht vorhanden
{{ end }}
{{ $.Scarch.Get "id" }} {{/* verwenden außerhalb der Schleife */}}
{{<gallary ParameterName01="huhu1" ParameterName02="hahah2">}}
Sinnvoll ist es vorher zu prüfen ob ein definierter Name als Parameter verwendet wird. Das kann mit der Funktion .IsNamedParams
erfolgen.
{{ if .IsNamedParams }}
yes - ein Parameter wurde per Name definiert
{{ else }}
no - ein Parameter kann vorhanden sein (z.B. per index), ist aber nicht als Parameter definiert
{{ end }}
Parameterübergabe von *.html zu *.html
Übergabeparameter alles = {{ printf "%#v" . }}
Übergabeparameter 1 = {{ index . 0 }}
Übergabeparameter 2 = {{ index . 1 }}
Aufruf aus einer *.html Datei z.B. partials/header.html mit:
{{ $myparam := slice "hahahaha" "huhuhu" }}
{{ partial "sampleparameter" $myparam }}