Keith misner h0 vxgz5ty xa unsplash

Hugo-Funktion, um das aktuelle OutputFormat zu erhalten

Hugo bietet derzeit keine Funktion, um das aktuelle OutputFormat zu erhalten – dieses Partial1 bietet eine einfache Lösung.

Hugo ermöglicht das Hinzufügen von benutzerdefinierten Ausgabeformaten – jedoch bietet es bis einschliesslich Version 0.111.0 keine Funktion, um das OutputFormat des aktuellen Seitenkontexts bereitzustellen. Da Hugo zwei Funktionen zur Auflistung verfügbarer OutputFormats bereitstellt, die sich darin unterscheiden, ob sie das aktuelle OutputFormat enthalten, liefert ein einfacher Aufruf von complement die Antwort.

Hinweis

Es gibt ein offenes Issue auf GitHub bezüglich des Fehlens einer OutputFormat-Eigenschaft der Page-Klasse. Joe Mooring kam auf dieselbe Lösung wie unten. Aber er fügt auch einen wichtigen Vorbehalt hinzu: Das untenstehende funktioniert nur, solange alle deklarierten OutputFormats folgendes in config.toml deklariert haben:

1notAlternative = false

Du kannst das folgenden Snippet zu layouts/partials/_functions hinzufügen, um diese Funktion in Deinen Templates zu verwenden.

 1{{- /* partial output-format
 2Returns the [OutputFormat](https://gohugo.io/templates/output-formats/)
 3of the page passed as argument in the current context.
 4USAGE: use as a function in the context of a page, as follows:
 5  {{- outputFormat := partial "partials/_functions/output-format" . }}
 6*/ -}}
 7{{- $outputFormat := false }}
 8{{- with (complement $.AlternativeOutputFormats $.OutputFormats) }}
 9  {{- $outputFormat = index . 0 }}
10{{- end }}
11{{- return $outputFormat }}
Speichere dieses Snippet als layouts/partials/_functions/output-format

In diesem Beitrag haben wir gesehen, wie wir mit einem einfachen Partial in Hugo das aktuelle OutputFormat erhalten können, obwohl Hugo selbst noch keine Funktion dafür anbietet. Es ist wichtig zu beachten, dass diese Lösung unter der Bedingung funktioniert, dass alle deklarierten OutputFormats den Parameter notAlternative = false in der config.toml-Datei deklariert haben.

Durch das Hinzufügen des oben genannten Schnipsels zu layouts/partials/_functions kannst Du das OutputFormat in Deinen Templates verwenden und die Ausgabe der Seiten dynamisch anpassen, je nachdem, welches Format gerade verwendet wird.

Denke bitte daran, dass es sich hierbei um eine temporäre Lösung handelt, bis Hugo möglicherweise eine integrierte Funktion für das Abrufen des aktuellen OutputFormats bereitstellt. Am besten abonnierst Du das offene Issue auf GitHub, um über zukünftige Updates informiert zu bleiben.


Foto von Keith Misner auf Unsplash.


  1. Ein Partial ist ein Hugo-spezifisches Template und wird im Projektverzeichnis unter layouts/partials abgelegt. Partials, welche keinen Inhalt ausgeben, sondern wie das vorliegende einen Wert zurück liefern, werden oftmals unter layouts/partials/_functions abgelegt. Dies ist aber keine Voraussetzung. ↩︎