wir nutzen aktuell die Shopware-Usetzung zum Garan-Label und haben aktuell die Anforderung, dass das Label auf der Produktdetailseite an einer anderen Stelle platziert werden soll.
Aktuell wir es ja direkt unter dem „In den Warenkorb“-Button angezeigt.
1.) Gibt es einen Grund warum das Label so positioniert ist? Ist das eine rechtliche Vorgabe?
2.) Mit welchem Twig-code kann das Label in SW 6.6. an einer anderen Stelle platziert werden?
Produktdetailseiten werden bei uns als Erlebniswelten gepflegt. d.h. ich benötige den entsprechenden Twig-Block um das Garan-Label anzuzeigen in der Erlebniswelt an beliebiger Stelle anzuzeigen und dann an der Standardstelle (unter dem Warenkorb) zu entfernen.
Habe mein Beitrag noch mal gelöscht, weil der Code ja bei dir SW 6.6 gar nicht geht. Dann musst du dir selber die Grafik erstellen und selber ein Code entwickeln und dann an deine gewünschte Stelle einbauen. Musst nur bedenken, dass die Werte wie Monate und Herstellernummer mir rein müssen. Da ist die Erlebniswelten jetzt etwas ungünstig.
Warum sollte der Code in SW 6.6. nicht funktionieren? Ich dachte es gibt für die ganze GARAN-Einbindung einen Backport der SW 6.7. entspricht.
Wir bekommen das GARAN-Label ja auch angezeigt, nur die Position (direkt unter dem Warenkorb-Button) wird als ungünstig empfunden und soll deshalb aus der BuyBox raus und an anderer Stelle im Produkttemplate angezeigt werden.
Eine feste Stelle schreibt die EU-Verordnung nach allem, was ich dazu gelesen habe, nicht vor. Das Garantielabel gehört aber zum Produkt, also auf die Produktseite und nicht erst in den Checkout. Unter dem Warenkorb-Button ist einfach die Stelle, die Shopware standartmäßig gewählt hat. Verbindlich sagen kann das natürlich nur ein Anwalt.
Der Twig-Code
Der Code ist auch in 6.6 drin, seit 6.6.10.24. Das Label sitzt im Block buy_widget_garan_label in storefront/component/buy-widget/buy-widget.html.twig, und genau dieses Template bindet die Buy-Box in der Erlebniswelt ein.
An der Standardstelle entfernen. Im eigenen Theme Resources/views/storefront/component/buy-widget/buy-widget.html.twig anlegen:
Den Block in eine eigene Datei kopieren, z.B. Resources/views/storefront/component/product/garan-label.html.twig im Theme. Das Original liegt unter vendor/shopware/storefront/Resources/views/storefront/component/buy-widget/buy-widget.html.twig, kopiert wird alles von {% block buy_widget_garan_label %} bis zum passenden {% endblock %}.
Dort einbinden, wo es hin soll. Auf einer Produktseite mit Erlebniswelt ist das Produkt in jedem Element als page.product verfügbar. Also im Template des Elements, an dem das Label stehen soll, z.B. unter der Bildergalerie (element/cms-element-image-gallery.html.twig per sw_extends, passenden Block erweitern):
{% if page.product ?? false %}
{% sw_include '@Storefront/storefront/component/product/garan-label.html.twig' with { product: page.product } %}
{% endif %}
Die Abfrage braucht es, weil die Galerie auch auf Seiten ohne Produkt vorkommen kann.
Das Aufklappen funktioniert an jeder Stelle, weil Shopware das Script an data-garan-label-toggle hängt und nicht an die Buy-Box. Die Styles hängen auch nicht daran.
Wenn ihr es wirklich frei in der Erlebniswelt verschieben wollt wie ein normales Element braucht es ein eigenes CMS-Element. Das ist etwas mehr Arbeit.
Und bei Updates mal auf den Original-Block schauen: Am Label hat Shopware in den letzten 6.6-Releases mehrmals was geändert, die Kopie zieht da nicht mit.