Diese Seite richtet sich an Hersteller von Erweiterungen (Plugins und Apps) für Shopware 6. Sie beschreibt, worauf du achten solltest, damit deine Erweiterung mit ThemeWare® zusammenarbeitet - und was ThemeWare® auf seiner Seite dafür tut.
Hinweis: Dank der ThemeWare® HC-Architecture® lassen sich fast alle ThemeWare®-Erweiterungen des Shopware-Standards in der Theme-Konfiguration auf die Shopware-Darstellung zurücksetzen. Kommt es zu einem Konflikt, ist das in der Regel der schnellste Weg für den Shop-Betreiber.
Die wichtigste Regel: Blöcke mit parent() weiterreichen
ThemeWare® hängt sich an die Twig-Blöcke der Shopware Storefront. Wenn deine Erweiterung einen dieser Blöcke überschreibt und den ursprünglichen Inhalt nicht wieder einbindet, verschwindet alles, was ein Theme dort ergänzt hat - ohne Fehlermeldung.
Binde den ursprünglichen Inhalt deshalb immer mit {{ parent() }} ein und ergänze deinen eigenen Inhalt davor oder danach:
{% sw_extends '@Storefront/storefront/layout/header/top-bar.html.twig' %}
{% block layout_header_top_bar_inner %}
{{ parent() }}
{# dein eigener Inhalt #}
{% endblock %}
Ersetzt du einen Block komplett, gilt das nicht nur für ThemeWare®: Jedes Theme, das denselben Block erweitert, verliert dort seine Inhalte.
Sonderfall Top-Bar
Ein bekanntes Beispiel ist die Top-Bar im Header. Manche Erweiterungen ersetzen dort den Block layout_header_top_bar_inner vollständig - so etwa Shopware Commercial ab Version 7.13 für den B2B-Kontextwechsel. Hotline, Service-Menü und die ThemeWare®-Gestaltung der Leiste gehen dabei verloren.
Für diesen Fall bringt ThemeWare® einen eigenen Kompatibilitätsmodus mit. Der Shop-Betreiber schaltet ihn in der Theme-Konfiguration ein:
"Weiteres" => "Kompatibilität (HC-Architecture®)" => "Header" => "Top-Bar" => ThemeWare® (Plugin-kompatibel)
ThemeWare® fängt den Inhalt der Erweiterung dann auf und bettet ihn in die eigene Top-Bar ein, statt ihn zu verdrängen. Deine Erweiterung muss dafür nichts tun - besser ist es trotzdem, den Block gar nicht erst zu ersetzen.
Tipp: Du entwickelst eine Erweiterung und bist dir unsicher, ob sie mit ThemeWare® zusammenarbeitet? Melde dich gern über unseren Support.