Die Liquid-Umgebung: wie streng sie ist
Unbekannte Variablen und Filter sind still, unbekannte Tags brechen ab — und ausgegeben wird ohne Maskierung.
Für EntwicklerVoraussetzungen
- Recht: website:write
Gerendert wird mit LiquidJS. Für jede Anfrage entsteht eine frische Umgebung; es gibt keinen Vorlagen-Zwischenspeicher.
Unbekannte VARIABLEN sind erlaubt und rendern leer. Unbekannte FILTER sind erlaubt und reichen den Wert unverändert durch. Unbekannte TAGS dagegen brechen ab — ein `{% schema %}` in einer Abschnittsdatei lässt die Seite mit einem Parse-Fehler stehen.
Es wird NICHT automatisch maskiert. Was in `{{ … }}` steht, geht roh in die Seite. Das ist Absicht, damit Vorlagen HTML erzeugen können — und es macht den Filter `escape` zu Ihrer Pflicht, sobald Sie einen Wert ausgeben, den jemand anders eingetippt hat. Für Adressen gibt es zusätzlich `safe_url`.
Wahrheitswerte folgen den Regeln von JavaScript: Eine leere Zeichenkette ist falsch, `0` ist falsch. Das weicht vom Liquid anderer Anbieter ab, wo beides wahr wäre.
`{% render %}` und `{% include %}` finden ein Teilstück aus `snippets/` unter drei Schreibweisen: `"button"`, `"button.liquid"` und `"snippets/button"`. Ein Zugriff auf das Dateisystem des Servers ist dabei nicht möglich — nachgesehen wird ausschliesslich in den Teilstücken des Themes.
Sandkasten im engeren Sinn gibt es nicht: keine Begrenzung der Renderdauer, keine Schleifengrenze, keine verbotenen Tags. Was begrenzt wird, sind die Schreibvorgänge — siehe den Artikel über das Bearbeiten des Codes.
Siehe auch
- Welche Liquid-Tags es gibt — und welche abbrechenGenau ein eigenes Tag, dazu die von LiquidJS. Fünf Tags aus anderen Liquid-Welten brechen hier die Seite ab.
- Die eigenen Liquid-FilterSieben Filter kommen von TacticTable dazu — alle übrigen sind die von LiquidJS.
- Wie ein Theme aufgebaut istDie Verzeichnisse eines Themes, die vier Pflichtdateien und was passiert, wenn eine davon fehlt.