Wir nutzen das Kyoto-Theme und haben in unserem Onlineshop auf der Startseite mehrere Sections, die alle Produkte aus verschiedenen Kategorien anzeigen (Getränke, Snacks, etc.9
Für all diese Produkte gibt es Smart Collections, welche den jeweiligen Produkt-Tag enthalten, sowie die Bedingung, dass der Lagerbestand größer als 1 ist.
Das funktioniert auch überall wunderbar, nur haben wir eine Section mit “Bestseller” auf der Startseite, die im Hintergrund mit der Smart Collection “Bestseller” verknüpft ist. Diese Smart Collection wiederum enthält 7 Bedingungen:
“Alle Produkte mit Tag: Bestseller Getränke”
“Alle Produkte mit Tag: Bestseller Snacks”
etc…
Diese 7 Smart Collections haben wiederum gesondert alle die Bedingung “Nur Lagerbestand > 1”.
Das funktioniert, wenn man sie einzeln anschaut auch problemlos, aber in der Bestseller-Section werden alle Artikel reingespült, auch die derzeit ausverkauften.
Gibt es hier eine einfache Lösung, auf die ich nicht komme?
Versuchen Sie den Lagerbestand-Zustand und wählen Sie anstelle eines beliebigen Zustands alle Zustände aus. Dann wird basierend darauf ein bestimmtes Produkt nur aufgelistet, wenn jede Bedingung erfüllt ist, in der Bestseller-Kollektion.
Bedingungen:
Produkt-Tag = Bestseller Getränke
ODER Produkt-Tag = Bestseller Snacks
ODER Produkt-Tag = Bestseller Süßigkeiten
usw.
Hi,
das ist einer dieser Fälle, wo Smart Collections dich hängen lassen — nicht dein Fehler. Zwei Gründe:
die Lagerbestand-Bedingung kann nur „größer als 0", kein „> 1", und
sobald du ODER-Tag-Logik mit einer Pflicht-Bedingung „Bestand" mischst, filtert sie nicht mehr sauber. Genau an deinem verschachtelten Setup (7 Collections, wieder kombiniert) scheitert das. Der zuverlässige Weg: im Abschnitt selbst filtern statt in der Collection. Du lässt die Section über die Produkte laufen und überspringst alles mit Bestand ≤ 1:
{% for product in collection.products %}
{%- assign qty = 0 -%}
{%- for v in product.variants -%}
{%- assign qty = qty | plus: v.inventory_quantity -%}
{%- endfor -%}
{% if qty > 1 %}
{% render 'card-product', card_product: product %}
{% endif %}
{% endfor %}
(Das Render-Snippet heißt je nach Theme anders — im Kyoto evtl. `product-card` o. ä.; setz einfach deine Produktkarte in den if-Block.)
Zwei ehrliche Hinweise: `inventory_quantity` stimmt nur bei aktiver Bestandsverfolgung; und wenn „Weiterverkaufen bei 0 Bestand" an ist, kann der Wert negativ werden — die Bedingung `> 1` fängt das aber sauber ab. Weil erst beim Anzeigen gefiltert wird, kann eine Paginierung mal krumme Zahlen zeigen — für eine Bestseller-Strecke egal. Der Smart-Collection-Umbau von oben wird dich hier vermutlich weiter im Kreis drehen lassen; der Section-Filter ist der Ausweg.