Bestand anzeigen Syntax Fehler

Topic summary

Problemstellung:
Ein Nutzer möchte grüne/rote Icons zur Anzeige der Produktverfügbarkeit im Shopify-Theme implementieren (ähnlich dem Impulse Theme). Beim ersten Versuch trat ein Liquid-Syntax-Fehler auf (Zeile 106), da ternäre Operatoren (? :) in Liquid nicht unterstützt werden.

Lösungsansätze:

  • App-basierte Lösung: Empfehlung spezialisierter Apps für Stock-Anzeigen als einfachste Option
  • DIY-Code: Verwendung von if-else-Statements statt ternären Operatoren, mit CSS-Styling für farbige Icons (grün bei >10 Stück, gelb bei niedrigem Bestand, rot bei Nicht-Verfügbarkeit)
  • Hinweis auf Theme-Backup und Zusammenarbeit mit Shopify-Experten

Aktuelles Problem:
Der überarbeitete Code mit JavaScript funktioniert teilweise, aber die Verfügbarkeitsinformationen werden beim Laden der Produktseite nur kurz angezeigt und verschwinden dann wieder.

Mögliche Ursachen:

  • Konflikt mit anderen Skripten, die die hidden-Class manipulieren
  • Timing-Problem: JavaScript wird möglicherweise ausgeführt, bevor alle Seitenelemente geladen sind
  • Empfehlung: Browser Developer Console auf JavaScript-Fehler prüfen, Skript ans Seitenende verschieben oder window.onload-Handler verwenden

Status: Problem ungelöst, weitere Diagnose erforderlich

Summarized with AI on November 20. AI used: claude-sonnet-4-5-20250929.

Ich möchte, dass mein Theme, mit einem grünen bzw. roten Icon anzeigt, ob das Produkt auf Lager ist oder nicht. (siehe folgendes Beispiel)

Dazu fügte ich den Code:

{% if product.available %}> {% assign stockQuantity = product.variants.first.inventory_quantity %}> {% assign stockIcon = stockQuantity > 0 ? ‘green’ : ‘red’ %}>

Lagerbestand: {{ stockQuantity }}

{% else %}>

Aktuell nicht auf Lager

{% endif %}

Show More

da tauchen dann Fehler auf:

Liquid syntax error (snippets/product-buttons line 106): Expected end_of_string but found comparison in “{{stockQuantity > 0 ? ‘green’ : ‘red’ }}”

Hey @Buenyamin

Danke für die Bilder und dieser grüner “In-Stock” Punkt ist ein Feature des Impulse Themes wie es aussieht und deswegen wird das nicht so einfach sein so einen Punkt in dein Theme einzubauen.

Der einfache Weg mit Apps:

Apps gibt es die das möglich machen was du brauchst. Siehe eine Demo die ich für dich ausgesucht habe hier.

Wenn du es doch DIY machen möchtest:

Wenn du es selber auf deiner XXXXseite programmieren möchtest dann bitte immer in einer Themekopie/Testumgebung zuerst testen und zusammen mit einem Experten/Programmierer. Du kannst ein Backup deines Themes erstellen, bevor man den Code bearbeitet, oder den Code wiederherstellen, falls dies nötig sein sollte. Du könntest auch einen unserer Experten engagieren indem du die hier eine E-Mail rüberschießt. Unsere Experten antworten meist sehr schnell.

Änderungen zu deinem Theme Code können auch 1) die Page Loading Speeds negative beeinflussen und 2) dein Theme aus den Theme Updates ausschließen. Das folgende ist Theme-abhängig, ohne Gewähr und dient lediglich dazu dich in die richtige Richtung zu weisen!

Deine Verwendung der ternären Operation ist korrekt, aber sie entspricht nicht der Syntax, die von der Shopify Liquid-Templating-Engine verwendet wird. Die ternäre Operation in Liquid ist strukturiert wie eine IF-ELSE Statement. So könnte ein Beispiel Code aussehen:

{% if product.available %}
 {% assign stockQuantity = product.variants.first.inventory_quantity %}
 {% if stockQuantity > 0 %}
   {% assign stockIcon = 'green' %}
 {% else %}
   {% assign stockIcon = 'red' %}
 {% endif %}
 

Lagerbestand:  {{ stockQuantity }}

{% else %}
 

Aktuell nicht auf Lager

{% endif %}

In diesem obigen Code wird zuerst geprüft, ob das Produkt verfügbar ist. Wenn ja, wird die Lagermenge zugewiesen und anschließend geprüft, ob diese Menge größer als Null ist. Wenn dies der Fall ist, wird stockIcon auf ‘green’ gesetzt, ansonsten auf ‘red’.

Jetzt berücksichtigt dieser Code aber nicht einen “low stock”-Status wie in meinem Impulse Theme Beispiel oben abgebildet. Wir können diesen Zustand hinzufügen, indem wir eine weitere Bedingung festlegen. Zum Beispiel könnte ‘low stock’ definiert werden, wenn die Lagermenge weniger als 10 ist:

{% if product.available %}
 {% assign stockQuantity = product.variants.first.inventory_quantity %}
 {% if stockQuantity > 10 %}
   {% assign stockIcon = 'green' %}
 {% elsif stockQuantity > 0 %}
   {% assign stockIcon = 'yellow' %}
 {% else %}
   {% assign stockIcon = 'red' %}
 {% endif %}
 

Lagerbestand:  {{ stockQuantity }}

{% else %}
 

Aktuell nicht auf Lager

{% endif %}

Es müssen auch die entsprechenden CSS-Stile für diese Lagerbestandsanzeigen definiert werden. Hier ist ein einfaches Beispiel:

.stock-icon {
 display: inline-block;
 vertical-align: middle;
 width: 10px;
 height: 10px;
 border-radius: 50%;
}

.stock-icon-green {
 background-color: green;
}

.stock-icon-yellow {
 background-color: yellow;
}

.stock-icon-red {
 background-color: red;
}

Hoffe das hilft! :wink:

Habe jetzt folgenden Code:


  {% for variant in product.variants %}
    {%- if variant == product.selected_or_first_available_variant -%}
      {% if variant.available %}
        

          
          **Auf Lager**
        

      {% else %}
        

          
          **Demnächst verfügbar**
        

      {% endif %}
    {% endif %}
  {% endfor %}

aber es funktioniert nur bedingt. Es wird beim Laden der Produktseite immer nur kurz angezeigt. Weißt du, woran das Problem liegen kann?

Hier das Preview:

https://fek39vcsq6dmqfee-46261272731.shopifypreview.com

Hey @Buenyamin

Danke für den Preview Link und da ich sehe derzeit folgendes:

Du verwendest im obigen Code also JS um die Verfügbarkeitsinformationen basierend auf der ausgewählten Produktvariante zu aktualisieren. Diese Informationen werden zunächst ausgeblendet und dann wieder eingeblendet, sobald die entsprechende Variante ausgewählt ist.

Wenn die Verfügbarkeitsinformationen nur kurz angezeigt werden und dann wieder verschwinden, könnte es sein, dass ein anderes Skript auf der Seite die Anzeige dieser Elemente beeinflusst.

Überprüfe, ob es andere Skripte auf der Seite gibt, die die hidden Class hinzufügen oder entfernen. Es könnte sein, dass ein anderes Skript in Konflikt steht.

Dann die Developer Console des Browsers verwenden, um zu sehen, ob JavaScript-Fehler auftreten. Wenn Fehler auftreten in der Dev Console zu sehen sind, prüfe jegliche Hinweise in den Fehler die auf das Problemursache deuten können:

Es könnte auch sein, dass das Skript ausgeführt wird, bevor alle Elemente der Seite vollständig geladen sind. In diesem Fall versuche, das Skript ans Ende der Page oder Code zu verschieben oder es in einen window.onload Event Handler zu setzen, um sicherzustellen, dass es ausgeführt wird, nachdem die gesamte Seite geladen ist.

Beispiel:

window.onload = function() {
 // Dein Skript hier
};

Ich hoffe du kannst verstehen, dass ohne einen direkten Zugriff zu deinem Shop und ein Deep-Dive in deinen Code, ist es zu schwierig, von hier aus in der Community genau zu verstehen, was das Problem sein könnte.

Du könntest auch einen unserer Experten engagieren indem du die hier eine E-Mail rüberschießt. Unsere Experten antworten meist sehr schnell.