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.

Beispiel Markdowndatei *.md

 +++
 date = "2020-10-19 08:48:53 &#43;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.

Parameter in config.toml

 [Params]
	param01 = true

Beispiel *.html

 <!-- 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)

/themes/mab-3.0/layouts/shortcodes/sampleparameter.html

 {{ $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.

Markdowndatei ./content/ *.md

 {{<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

./shortcodes/gallary.html

 {{ $id1 := .Get "ParameterName01" }}  
 {{ $id2 := .Get "ParameterName02" }}

./shortcodes/gallary.html mit Parameterprüfung

 {{/* Mit vorhergehender Prüfung des Parameters */}}
 {{ with .Get "ParameterName01" }}
	{{ $id1 := . }}  
	Parameter 01 vorhanden: {{ $id1 }}
 {{ else }}
	Parameter Nicht vorhanden	
 {{ end }}

./shortcodes/gallary.html mit Parameterprüfung und globaler Verfügbarkeit

 {{/* 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 */}}

Markdowndatei ./content/ *.md

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

./shortcodes/gallary.html

 {{ 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

/themes/mab-3.0/layouts/partials/sampleparameter.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 }}
   
Stichworte (tags)