FROM CACHE - de_header
Gelöst

Metaobjekte in Snippets nutzen

DavidOstendorf
Neues Mitglied
6 0 0

Hallo zusammen,

 

ich bin kurz vor dem Verzweifeln. Ich bin kein Profi Programmierer aber habe mich grundsätzlich mit Liquid und Programmierung beschäftigt und für javascript und php schon Kurse absolviert. Aber ich komme leider nicht weiter.

 

Mein Wunsch ist es Metaobjekte einem Snippet zu nutzen.

Folgendes Szenario:

Ich habe eine Section , die aufklappbare FAQs enthält und dafür auf ein Snippet rendert. Diese FAQs kann ich jeweils einzeln eingeben. Was mein Ziel ist, dass ich eine FAQ Section habe, die sich automatisch alle FAQ Fragen und FAQ Antworten vom Metaobjekt zieht.

 

DAS Metaobjekt habe ich angelegt und kann ich mit {% for faq in shop.metaobjects.faq.values %} erreichen.

Hier kann ich dann grundsätzlich die einzelnen Metafelder einblenden. Aber ich kriege sie einfach nicht an die richtige Stelle.

 

Ich glaube, das Problem liegt darin, dass die section auf ein Snippet verweist. Das Snippet habe ich geöffnet und ganz oben sehe ich im Assign, dass die Texte zugewiesen wurden.

 

Eigentlich ist es doch einfach. Ich muss nur irgendwo {{shop.metaobjects.faq.frage}} und {{shop.metaobjects.faq.antwort}} einfügen. Aber ich weiß nicht wo. Logisch wäre eigentlich, da die Snippet Datei auf die Sections datei verweist, das in das Schema der Sections einzutragen. 

Aber genau hier habe ich ein Problem, da das ja Eingabefelder sind. Ich hoffe sehr, dass mir jemand helfen kann, da wir in der Start Up Phase sind unr mir niemand helfen kann.

 

image.png

image.png

1 AKZEPTIERTE LÖSUNG

Guido_Michele
Shopify Partner
93 25 75

Erfolg.

Hallo @DavidOstendorf 

 

Du musst ein Metaobjekt erstellen, dass mindestens 2 Metafelder enthält, die richtig formatiert sein müssen, so wie ich den code sehe wäre das single line text für die Frage und multiline (richtext) für die Antwort. Das Metaobjekt kannst Du dann im Theme Editor mit der section verbinden.

 

Wenn Du das ganze selbst coden willst, dann musst Du zunächst einer variable das metaobjekt zuweisen  {% assign faq_object = page.metafields.custom.faq.value %} dann mit {{ faq_object.frage.value }} und {{faq_objcet.antwort.value }} Frage und Antwort ausgeben.

 

Ich hoffe das hilft. 

 

Gruß  Guido

 

Guido@guysworld.eu

Lösung in ursprünglichem Beitrag anzeigen

6 ANTWORTEN 6

Gabe
Shopify Staff
18047 2853 4197

Hey @DavidOstendorf 

 

Nicht verzweifeln! Es ist nicht ganz einfach was du erreichen möchtest aber 👀  wir hier weiter was alles möglich ist mit Metaobjekte und Metafeldern und Metafelder anzeigen im Theme Code. Das ganze hängt auch stark von den Fähigkeiten deines Themes ab und ich konnte dein Theme nicht aus deiner Beschreibung oben entnehmen.

 

Im Theme-Editor kannst du Abschnitte oder Blöcke hinzufügen, die dynamische Quellen unterstützen, und dann einzelne Metafelder über das Symbol für das Verbinden dynamischer Quellen auswählen. Dies ermöglicht es dir, spezialisierte Informationen auf deinem Online-Shop auf verschiedene Arten anzuzeigen, wie z.B. Brenndauer von Kerzen oder Produktablaufdaten.

 

Die Integration von Metafeldern und -Objekte die innerhalb einer Section gerendert werden müssen, ist nicht einfach, besonders wenn du nicht genau weißt, wo man den Code platziert. Stelle erstmals sicher, dass dein Metaobjekt korrekt eingerichtet ist und dass du auf die Werte zugreifen kannst. Das hast du aber bereits getan, stimmts? Um auf die Metaobjekte innerhalb des Snippets zugreifen zu können, musst du sicherstellen, dass die Variable, die die Metaobjekte enthält, an das Snippet übergeben wird. In Liquid wird dies typischerweise mit der assign oder capture Anweisung gemacht. Wenn du die FAQ-Section hast, die das Snippet rendert, kannst du versuchen, die Metaobjekte als Variable an das Snippet zu übergeben. In deiner Section könntest du etwas wie folgt tun:

 

{% assign faqs = shop.metafields.faq %}
{% render 'snippet-faq', faqs: faqs %}

 

In deinem Snippet kannst du dann auf die Variable faqs mit dieser FOR-Loop zugreifen:

 

{% for faq in faqs.values %}
  {{ faq.question }}
  {{ faq.answer }}
{% endfor %}

 

Wenn du möchtest, dass die FAQ-Daten dynamisch aus den Metaobjekten geladen werden, statt sie manuell über das Schema im Admin-Bereich einzugeben, musst du das Schema möglicherweise anpassen oder entfernen und stattdessen direkt im Liquid-Code auf die Metaobjekte zugreifen. Im Snippet selbst kannst du dann die Liquid-Logik verwenden, um über die Metaobjekte zu iterieren und die Fragen und Antworten anzuzeigen.

 

Das Debuggen

Wenn die Daten nicht erscheinen, prüfe, ob die Variable korrekt an das Snippet übergeben wird und ob das Iterieren über faqs.values die erwarteten Daten liefert. Verwende {{ faqs | json }} im Snippet, um zu debuggen, was genau übergeben wird. Vergewissere dich, dass die Schleife for korrekt aufgebaut ist und dass du die richtigen Schlüssel für die Fragen und Antworten verwendest. Manchmal ist es notwendig, die genaue Struktur der Metaobjekte zu kennen, um auf die Daten zugreifen zu können.

 

Wenn du es selber programmierst dann würde ich das 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 denen 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 negativ 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!

 

Hoffe das hilft dir weiter - lass wissen falls nicht! 😉

---
Habt ihr auch den Shop auf den Valentinstag 🫶 umgestellt? Jetzt ist die Zeit wo Online Shopper nach 🎁 für ihre ❤️ 👀!

Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Guido_Michele
Shopify Partner
93 25 75

Erfolg.

Hallo @DavidOstendorf 

 

Du musst ein Metaobjekt erstellen, dass mindestens 2 Metafelder enthält, die richtig formatiert sein müssen, so wie ich den code sehe wäre das single line text für die Frage und multiline (richtext) für die Antwort. Das Metaobjekt kannst Du dann im Theme Editor mit der section verbinden.

 

Wenn Du das ganze selbst coden willst, dann musst Du zunächst einer variable das metaobjekt zuweisen  {% assign faq_object = page.metafields.custom.faq.value %} dann mit {{ faq_object.frage.value }} und {{faq_objcet.antwort.value }} Frage und Antwort ausgeben.

 

Ich hoffe das hilft. 

 

Gruß  Guido

 

Guido@guysworld.eu

DavidOstendorf
Neues Mitglied
6 0 0

Ich danke euch beiden zunächst einmal für eure Unterstützung! Ich bin überwältigt, wie viel Mühe ihr euch gegeben habt und habe echten Support bekommen. Vielen DAnk.

Ich habe gestern einfach nicht ruhen können und habe dann um halb 1 in der Nacht eine LÖsung gefunden. Die ist vermutlich nicht so sauber wie eure, aber sie funktioniert.

Ich habe den fertigen HTML Code kopiert,diesen in die sections Datei eingefügt und in die Sections datei habe ich dann meine shop.metaobjects.faq.values geladen. Das funktioniert nun, aber ich denk, es würde auch eleganter gelöst werden können.

 

Warum ich es so gemacht habe, ist, weil mir irgendwann der Gedanke kam, dass ich hier vielleicht was durcheinander bringe. Die Standardmäßige Section, die ich hierfür nutze, sieht vor, Daten manuell eingeben zu können. Das benötigte ich aber nicht. Mir hat ein festes Format gereicht. Daher dachte ich , ich mache es einfacher und es hat geklappt 🙂

Gabe
Shopify Staff
18047 2853 4197

@DavidOstendorf 

 

Wow, wo ein Weg da ein Wille! Tolle Lösung und das kann u. U. auch andere hier helfen! 😉 

 

VG,

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

DavidOstendorf
Neues Mitglied
6 0 0

Das denke ich auch, dass es anderen helfen kann 🙂 Dazu habe ich hier mal den Code eingefügt, das sollte helfen:)

 

image.png

Gabe
Shopify Staff
18047 2853 4197

Danke. Den Code als <code> Text hier einfügen wäre etwas einfacher denn dann kann man ihn direkt kopieren anstatt vom Bild abzuschreiben. Aber musst du nicht unbedingt!

 

13-57-tusd4-ujoog

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog