Liquid, JavaScript, Themes
Hallo zusammen,
ich würde in meinen Kategorien gerne Kategoriebubbles zu ähnlichen Kategorien einfügen. Dies würde ich gerne mit Metafelder & -objekten umsetzen um nicht so viele Kategorievorlagen erstellen zu müssen.
Ich habe ein Metaobjekt erstellt und dieses mit den Einträgen der ähnlichen Kategorien befüllt. Anschließend habe ich ein Metafeld für Kategorien erstellt und zu den entsprechenden Kategorien hinzugefügt.
Allerdings kann ich das Metafeld in meiner Kategorie jetzt immer nur mit einem Eintrag aus dem Metaobjekt befüllen. Das reicht aber meist nicht da es i.d.r 2-3 weiterführende Kategorien gibt.
Ich habe schon öfter gelesen das Kategoriebubbles ein klassicher Anwendungsfall für die Metaobjekte sind. Daher frage ich mich ob ich hier einen Denkfehler in meiner Umsetzung habe?
Ich freue mich über eure Rückmeldung!
Gelöst! Zur Lösung
Erfolg.
Hey @Jakob_blm
Dein Denkfehler könnte darin bestehen, dass das Metafeld nur eine einzige Referenz zulässt. Du musst es so konfigurieren dass es mehrere Einträge erlaubt. Überprüfe, ob das Feld in den Metafeldern als Mehrfachauswahl definiert ist und die verknüpften Metaobjekte die richtigen Referenzen enthalten. Dadurch sollten mehrere Metaobjekte in einem einzigen Metafeld gespeichert und in Liquid diese dann durch Iteration angezeigt werden v.a. wenn man mehrere verwandte Kategorien anzeigen möchte, ohne separate Felder für jede Kategorie zu erstellen.
Bzgl. dem Zugriff auf die Metaobjekte in Liquid, darauf achten, dass das richtige Metaobjekt-Handle und die Metafeldstruktur referenziert werden. Einige Community-User haben gemeldet, dass sie die Metaobjekte über product.metafields.custom.[metafeld_name].value ansprachen und dann durch die enthaltenen Objekte iterierten (Shopify Community). Oder die direkte Referenzierung und Abfrage der Metaobjekte durch die for-Schleife erreichen.
Oder eben, wenn eine Pagination oder Filterung benötigt wird und Shopify die Begrenzung von 50 Einträgen pro Abfrage hat, was das Filtern erschwert. Hier empfehlen Community User eine Kombi aus Liquid-Code und JavaScript, um Metaobjekte zu filtern und paginierte Ergebnisse zu erhalten. Oder eben separate Seiten für verschiedene Filterkategorien erstellen, was jedoch mit höherem Pflegeaufwand verbunden ist (Shopify Community).
Oder eben Metaobjekte als „Datenbank“ nutzten, um strukturierte Inhalte wie FAQs, Lieferantenprofile, oder Kategoriebubbles zu speichern. Einige Nutzer haben sie für dynamische Seitenelemente (wie Bubbles) genutzt, indem sie Metaobjekte mit spezifischen Feldern (z.B. Titel, Bild, URL) erstellten und diese dann in den Vorlagen referenzierten was eine einfache Pflege und Erweiterung von Inhalten direkt über die Shopify-Oberfläche ermöglicht (Shopify Community).
Hier der Code dafür aus den Threads genommen:
{% if collection.metafields.custom.ähnliche_kategorien != blank %}
<div class="category-bubbles">
{% for kategorie in collection.metafields.custom.ähnliche_kategorien.value %}
<div class="category-bubble">
<a href="{{ kategorie.url }}">
<img src="{{ kategorie.image }}" alt="{{ kategorie.title }}">
<span>{{ kategorie.title }}</span>
</a>
</div>
{% endfor %}
</div>
{% endif %}
Erfolg.
Hey @Jakob_blm
Dein Denkfehler könnte darin bestehen, dass das Metafeld nur eine einzige Referenz zulässt. Du musst es so konfigurieren dass es mehrere Einträge erlaubt. Überprüfe, ob das Feld in den Metafeldern als Mehrfachauswahl definiert ist und die verknüpften Metaobjekte die richtigen Referenzen enthalten. Dadurch sollten mehrere Metaobjekte in einem einzigen Metafeld gespeichert und in Liquid diese dann durch Iteration angezeigt werden v.a. wenn man mehrere verwandte Kategorien anzeigen möchte, ohne separate Felder für jede Kategorie zu erstellen.
Bzgl. dem Zugriff auf die Metaobjekte in Liquid, darauf achten, dass das richtige Metaobjekt-Handle und die Metafeldstruktur referenziert werden. Einige Community-User haben gemeldet, dass sie die Metaobjekte über product.metafields.custom.[metafeld_name].value ansprachen und dann durch die enthaltenen Objekte iterierten (Shopify Community). Oder die direkte Referenzierung und Abfrage der Metaobjekte durch die for-Schleife erreichen.
Oder eben, wenn eine Pagination oder Filterung benötigt wird und Shopify die Begrenzung von 50 Einträgen pro Abfrage hat, was das Filtern erschwert. Hier empfehlen Community User eine Kombi aus Liquid-Code und JavaScript, um Metaobjekte zu filtern und paginierte Ergebnisse zu erhalten. Oder eben separate Seiten für verschiedene Filterkategorien erstellen, was jedoch mit höherem Pflegeaufwand verbunden ist (Shopify Community).
Oder eben Metaobjekte als „Datenbank“ nutzten, um strukturierte Inhalte wie FAQs, Lieferantenprofile, oder Kategoriebubbles zu speichern. Einige Nutzer haben sie für dynamische Seitenelemente (wie Bubbles) genutzt, indem sie Metaobjekte mit spezifischen Feldern (z.B. Titel, Bild, URL) erstellten und diese dann in den Vorlagen referenzierten was eine einfache Pflege und Erweiterung von Inhalten direkt über die Shopify-Oberfläche ermöglicht (Shopify Community).
Hier der Code dafür aus den Threads genommen:
{% if collection.metafields.custom.ähnliche_kategorien != blank %}
<div class="category-bubbles">
{% for kategorie in collection.metafields.custom.ähnliche_kategorien.value %}
<div class="category-bubble">
<a href="{{ kategorie.url }}">
<img src="{{ kategorie.image }}" alt="{{ kategorie.title }}">
<span>{{ kategorie.title }}</span>
</a>
</div>
{% endfor %}
</div>
{% endif %}
Hey Ben,
danke dir für die ausführliche Antwort!
Tatsächlich lag es nur daran das ich das Metafeld in dem die Metaobjekte gespeichert werden sollen falsch konfiguriert hatte.
Jetzt funktioniert es wie gewünscht 🙂
Viele Grüße
Jakob
Teil 2 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 16, 2024Teil 1 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 9, 2024Anpassungen des benutzerdefinierten Codes an Shopify-Themes (CSS) leicht gemachtIn diesem...
By Gabe Aug 28, 2024