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 (`{% style %}`, `{% form %}`, `{% javascript %}`, `{% stylesheet %}`, `{% paginate %}`), ein Syntaxfehler in einer Klammer und ein `{% render %}` auf ein Teilstück, das es nicht gibt. Ein `{% schema %}…{% endschema %}`-Block wird dagegen ohne Ausgabe toleriert.
Wenn gespeicherte Änderungen nicht erscheinen, prüfen Sie die gespeicherte Entwurfsrevision, die geöffnete Seitenvorlage und die Vorschauadresse. Die öffentliche Seite kann noch auf der älteren veröffentlichten Revision stehen.
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 }}]{% 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 abbrechenSection und Schema als Plattform-Tags, dazu LiquidJS; fremde Form- und Style-Tags brechen 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: Revisionen und GrenzenWann gespeicherte Änderungen live gehen und welche Grenzen beim Speichern gelten.