Skip to main content

Documentation Index

Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt

Use this file to discover all available pages before exploring further.

Beim Erstellen von Templates reicht es nicht aus, nur Variablen, Funktionen oder Operatoren zu kennen. Ebenso wichtig ist es, wie ein Ausdruck im Template verarbeitet wird. Die verwendete Syntax entscheidet darüber, ob eine Anweisung nur ausgeführt, ein Wert ausgegeben oder eine Ausgabe automatisch escaped wird. Diese Unterscheidung ist für die Template-Entwicklung relevant, weil sie direkten Einfluss auf das erzeugte Ergebnis hat. Je nach Schreibweise erscheint ein Wert im HTML, wird nur intern verarbeitet oder unverändert ausgegeben. Dadurch bestimmt die Syntax nicht nur die Ausgabe selbst, sondern auch, ob Inhalte für den jeweiligen Kontext korrekt und sicher ausgegeben werden. Die verschiedenen Formen von Anweisungen helfen daher dabei, Template-Logik und Ausgabe sauber zu steuern. Sie legen fest, wann ein Ausdruck lediglich verarbeitet wird und wann sein Ergebnis im generierten Dokument erscheint. Gleichzeitig steuern sie das Escaping und damit den Umgang mit Sonderzeichen, HTML-Inhalten oder anderen Ausgabekontexten. Diese Seite beschreibt die verfügbaren Schreibweisen für Anweisungen und zeigt, wie sie sich auf Verarbeitung, Ausgabe und Escaping auswirken.

Anweisungen im Überblick

SyntaxBeschreibungTypische Verwendung
{{ ... }}Führt eine Anweisung aus, ohne eine Ausgabe zu erzeugen.Variablen setzen, Hilfslogik ausführen.
{{= … }}Gibt einen Wert aus und ersetzt dabei HTML-Sonderzeichen.Normale Ausgabe im HTML.
{{! … !}}Gibt einen Wert aus, ohne HTML-Sonderzeichen zu ersetzen.Bereits aufbereitete Inhalte gezielt unverändert
ausgeben.
{{ autoescape “js” }} …
{{ /autoescape }}
Wechselt den Escaping-Modus innerhalb eines Blocks.Ausgabe in speziellen Kontexten, z.B. JavaScript

Anweisungen ohne Ausgabe

Mit {{ ... }} wird eine Anweisung ausgeführt, ohne dass ihr Ergebnis direkt ausgegeben wird. Diese Schreibweise wird verwendet, wenn im Template etwas vorbereitet oder verarbeitet werden soll, ohne dass an dieser Stelle bereits Inhalt im generierten Dokument bzw. Seite erscheint. Typische Anwendungsfälle sind das Setzen von Variablen, das Vorbereiten von Hilfswerten oder das Aufrufen von Logik, deren Ergebnis erst später benötigt wird.

Beispiel

In diesem Beispiel wird der Produktname in einer Variablen gespeichert. An dieser Stelle wird jedoch noch nichts ausgegeben.
{{ var $myVariableForProductname = $product.name }}

Verwendung

Diese Syntax ist sinnvoll, wenn ein Wert zunächst nur weiterverarbeitet oder für eine spätere Ausgabe vorbereitet werden soll. Sie sollte verwendet werden, wenn:
  • eine Variable gesetzt wird
  • ein Wert zwischengespeichert wird
  • eine Anweisung nur der Template-Logik dient
  • an dieser Stelle keine direkte Ausgabe im HTML gewünscht ist

Ausgabe mit Escaping

Mit {{= … }} wird ein Wert ausgegeben und dabei automatisch escaped. Diese Schreibweise ist der Standard für die Ausgabe im Template, wenn Inhalte im HTML erscheinen sollen. Einfache (') und doppelte (") Anführungszeichen innerhalb von {{= … }} sind gleichwertig. Der Unterschied wirkt sich nur auf das Syntax-Highlighting im Code-Editor aus. Escaping sorgt dafür, dass Sonderzeichen nicht als HTML interpretiert werden. Dadurch bleibt die Ausgabe korrekt und Inhalte werden als Text behandelt.

Beispiel

{{= $product.name }}
Enthält $product.name beispielsweise den Wert
<b> Tom & Jerry </b>
wird daraus in der HTML-Ausgabe
&lt;b&gt;Tom &amp; Jerry&lt;/b&gt;
Die Zeichen werden also so ausgegeben, dass sie im Browser korrekt dargestellt werden und nicht als HTML-Markup interpretiert werden.

Verwendung

Diese Syntax sollte für normale Ausgaben im Template grundsätzlich bevorzugt werden. Sie sollte verwendet werden, wenn:
  • Text im HTML ausgegeben werden soll
  • Inhalte aus Variablen ausgegeben werden
  • nicht ausdrücklich gewünscht ist, dass HTML unverändert übernommen wird
  • eine sichere Standardausgabe benötigt wird
In der Praxis ist {{= … }} in den meisten Fällen die richtige Wahl.

Escaping für einen Bereich festlegen

Mit autoescape kann für einen zusammenhängenden Bereich festgelegt werden, wie Ausgaben escaped werden sollen. Das ist vor allem dann relevant, wenn Inhalte nicht im normalen HTML-Kontext ausgegeben werden, sondern beispielsweise innerhalb von JavaScript.

Beispiel

{{ autoescape "js" }}
    const productName = "{{= $product.name }}";
{{ /autoescape }}
In diesem Beispiel wird der Escaping-Modus für JavaScript gesetzt. Dadurch werden Ausgaben innerhalb dieses Bereichs passend für diesen Kontext behandelt. Enthält $product.name zum Beispiel den Wert Damen-Jacke "Alpine" , wird daraus "Damen-Jacke \"Alpine\" , sodass die Anführungszeichen den JavaScript-String nicht unterbrechen.

Verwendung

Diese Syntax sollte verwendet werden, wenn die Ausgabe in einem speziellen Ausgabekontext erfolgt, für den ein anderer Escaping-Modus erforderlich ist. Das ist insbesondere sinnvoll, wenn Inhalte innerhalb von JavaScript, JSON oder vergleichbaren Kontexten ausgegeben werden.

Ausgabe ohne Escaping

Mit {{! … !}} wird ein Wert unverändert ausgegeben. Es erfolgt kein automatisches Escaping. Die Ausgabe wird also genau so in das generierte Dokument übernommen, wie der Wert vorliegt. Das ist nur dann sinnvoll, wenn der Inhalt bewusst ungeescaped ausgegeben werden soll, etwa weil er bereits korrekt als HTML formatiert wurde.

Beispiel

{{! $product.name !}}
Enthält $product.name beispielsweise den Wert
<b> Tom & Jerry </b>
wird dieser Inhalt in der HTML-Ausgabe auch als HTML übernommen
Tom & Jerry

Verwendung

Diese Syntax sollte nur gezielt und mit Vorsicht verwendet werden. Sie sollte verwendet werden, wenn:
  • Inhalte bewusst als HTML ausgegeben werden sollen
  • der auszugebende Wert bereits korrekt aufbereitet ist
  • kein zusätzliches Escaping mehr erfolgen darf
Sie sollte nicht verwendet werden, wenn gewöhnlicher Text ausgegeben werden soll. In solchen Fällen ist {{= … }} die richtige Wahl.