Handlebars
Syntax
Der Großteil der Syntax entspricht Handlebars, wurde jedoch um einige Verbesserungen erweitert.
Variablen
Variablen können im Template mit folgender Syntax ausgegeben werden:
{{ variable }}
{{ variable.property }}
Block-Helfer
if
Bedingte Ausgabe
{{#if nullable_variable as variable }}
<!-- Aktion ausführen, `variable` ist hier als Non-Nullable von `nullable_variable` verfügbar -->
{{else if other_nullable_variable as variable }}
<!-- Alternative Aktion, `variable` ist hier als Non-Nullable von `other_nullable_variable` verfügbar -->
{{else}}
<!-- Fallback-Aktion -->
{{/if}}
Each (Schleifen)
Über Listen iterieren und den Inhalt für jedes Element ausgeben
{{#each variable as item }} <!-- `item` kann ein beliebiger Bezeichner sein -->
<!-- Aktion für jede Iteration ausführen -->
<!-- Das aktuelle Element ist unter `item` verfügbar -->
{{ item }}
{{else}}
<!-- Aktion ausführen, wenn `variable` leer ist -->
{{/each}}
With
Einen neuen Kontext mit einer neuen Variable erstellen
{{#with properties.content as content}}
<!-- `content` ist nun der Wert von `properties.content` -->
{{ render_markdown(content) }}
{{/with}}
Inline-Helfer
Dies unterscheidet sich von Inline-Helfern in Handlebars, da Neleto verlangt, dass Argumente in Klammern eingeschlossen werden:
{{ render_elements(page.elements) }}
oder mit mehreren Argumenten, getrennt durch Kommas:
{{ date(page.created_at, "%Y") }}
Eingebaute Helfer
Neletos Template-Sprache enthält einige eingebaute Helfer, die in Templates verwendet werden können.
render_elements
Dieser Helfer gibt ein Array von Elementen aus.
{{ render_elements(page.elements) }}
{{ render_elements(children) }}
date
Dieser Helfer formatiert Datumsangaben mit dem angegebenen Format.
{{ date(page.created_at, "%Y") }}
Eine Übersicht der verfügbaren Optionen für das zweite Argument findet sich unter Chrono (docs.rs).
Häufige Format-Bezeichner:
| Bezeichner | Beschreibung | Beispiel |
|---|---|---|
%Y | 4-stelliges Jahr | 2024 |
%y | 2-stelliges Jahr | 24 |
%m | Monat (01-12) | 01 |
%B | Vollständiger Monatsname | January |
%b | Abgekürzter Monatsname | Jan |
%d | Tag (01-31) | 15 |
%H | Stunde, 24h (00-23) | 14 |
%I | Stunde, 12h (01-12) | 02 |
%M | Minuten (00-59) | 30 |
%S | Sekunden (00-59) | 05 |
%p | AM / PM | PM |
%A | Vollständiger Wochentag | Monday |
%a | Abgekürzter Wochentag | Mon |
render_markdown
Gibt einen Markdown-String als HTML aus.
{{ render_markdown(properties.content) }}
sanitize
Bereinigt einen Eingabe-String von HTML.
{{ sanitize(properties.html_code) }}
render_structured_data
Gibt strukturierte Daten eines Blogbeitrags aus.
{{ render_structured_data(relations.post) }}
image_path
Gibt einen Pfad zu einem Bild mit Parametern aus.
{{ image_path(relation.image, "f_webp") }}
Alle verfügbaren Optionen (Größe, Format, Qualität usw.) sind auf der Seite Bild-Skalierung dokumentiert.
file_path
Gibt einen Pfad zu einer Datei ohne Parameter aus.
{{ file_path(relations.file) }}
render_meta_tag
Gibt ein Meta-Tag der Seite oder der Einstellungen aus.
{{ render_meta_tag(meta_tag) }}
stringify
Wandelt einen beliebigen Wert in JSON um.
{{ stringify(properties) }}
render
Gibt einen beliebigen Wert mit Handlebars und dem aktuellen Kontext aus.
{{ render(properties.handlebars) }}