Häufige Fehler und woran man sie erkennt
Was passiert bei einem unbekannten Abschnitt, bei einer fehlenden Einstellung, bei einer Schleife über nichts — und welche Fehler die Seite wirklich abbrechen.
Für EntwicklerVoraussetzungen
- Recht: website:write
Die meisten Fehler in dieser Engine sind STILL. Das ist die wichtigste Eigenschaft, die man beim Suchen kennen muss: Eine leere Stelle im Ergebnis kann ein Tippfehler sein, ein fehlender Wert oder ein Filter, den es nicht gibt — von aussen sehen alle drei gleich aus.
UNBEKANNTER ABSCHNITT im `{% section %}`-Tag: Es erscheint ein HTML-Kommentar `<!-- section "name" not found -->` und die Seite läuft weiter. Schauen Sie in den Quelltext, wenn ein Kopf- oder Fussbereich fehlt.
UNBEKANNTER ABSCHNITTSTYP in einer Vorlage: Dasselbe in Grün, nur mit anderem Wortlaut — `<!-- section type "typ" missing -->`. Ursache ist fast immer ein `type` in der Vorlage, zu dem keine Datei `sections/<typ>.liquid` gehört.
FEHLENDE EINSTELLUNG: Leere Ausgabe, kein Fehler. Prüfen Sie zuerst die Schreibweise der `id` im Schema — sie ist der Schlüssel unter `section.settings`, und niemand vergleicht die beiden.
SCHLEIFE ÜBER NICHTS: null Runden, kein Fehler. Ein `{% else %}`-Zweig macht daraus eine sichtbare Aussage.
UNBEKANNTER FILTER: Der Wert geht unverändert durch. Aus `{{ preis | money_with_currency }}` wird die nackte Zahl. Das ist die häufigste Ursache für „sieht kaputt aus, steht aber nichts im Log".
WAS WIRKLICH ABBRICHT — und zwar die GANZE Seite, nicht nur den Abschnitt: ein unbekanntes Tag (`{% schema %}`, `{% style %}`, `{% form %}`, `{% javascript %}`, `{% stylesheet %}`, `{% paginate %}`), ein Syntaxfehler in einer Klammer und ein `{% render %}` auf ein Teilstück, das es nicht gibt.
Wenn gespeicherte Änderungen gar nicht erscheinen, liegt es meist nicht am Liquid: Kann der Git-Zweig nicht gelesen werden, wird still die mitgelieferte Vorlage von der Platte ausgeliefert. Das ist die erste Stelle zum Nachsehen.
Codebeispiele
{% section 'gibt-es-nicht' %}<!-- section type "tageskrate" missing -->ohne Rückfall: [{{ section.settings.gibt_es_nicht }}]
mit Rückfall: [{{ section.settings.gibt_es_nicht | default: 'Vorgabe' }}]
so fällt es auf: {% if section.settings.gibt_es_nicht == blank %}<!-- Einstellung gibt_es_nicht ist leer -->{% endif %}vorher{% for eintrag in gibt_es_nicht %}NIEMALS{% endfor %}nachher
{% for eintrag in gibt_es_nicht %}{{ eintrag }}{% else %}<!-- Liste ist leer oder fehlt -->{% endfor %}richtig: [{{ restaurant.name }}]Tippfehler im Objekt: [{{ restaurants.name }}]Tippfehler im Feld: [{{ restaurant.namen }}]falsches Objekt aus einer anderen Liquid-Welt: [{{ shop.name }}]leere Zeichenkette: [{{ '' | money }}]
gar nichts: [{{ gibt_es_nicht | money }}]
Text: [{{ 'kostenlos' | money }}]{% schema %}{ "name": "Abschnitt" }{% endschema %}{% style %}.a { color: red; }{% endstyle %}{% render 'teilstueck-das-es-nicht-gibt' %}{% if %}Klammer ohne Bedingung{% endif %}Siehe auch
- Die Liquid-Umgebung: wie streng sie istUnbekannte Variablen und Filter sind still, unbekannte Tags brechen ab — und ausgegeben wird ohne Maskierung.
- 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.
- Teilstücke: render und includeWiederverwendbares Markup aus snippets/ — und der eine Unterschied zwischen render und include, an dem die meisten Übersetzungen scheitern.
- Theme-Dateien schreiben: Ablage, Zweige und GrenzenWo die Dateien liegen, wie das Live-Theme davon getrennt bleibt und welche Grenzen beim Speichern gelten.