Wer zum ersten Mal ein Shopware 6-Plugin entwickelt, steht vor einer steilen Lernkurve: Symfony-Komponenten, Dependency Injection, Data Abstraction Layer, Storefront-Events. Dieser Artikel gibt dir den Überblick, den ich zu Beginn gebraucht hätte.
Grundstruktur eines Plugins
Jedes Shopware 6-Plugin ist ein Symfony-Bundle. Minimal besteht es aus drei Bestandteilen: der Plugin-Klasse (die von Shopware\Core\Framework\Plugin erbt), einer composer.json für Autoloading und Metadaten, und einer services.xml für Dependency Injection.
Die Plugin-Klasse kann Lifecycle-Hooks implementieren: install(), update(), activate(), deactivate() und uninstall(). So reagiert dein Plugin auf Installation, Updates und Deaktivierung — ohne Core-Code anzufassen.
Der Data Abstraction Layer (DAL)
Shopware's DAL ist das Herzstück — eine ORM-ähnliche Schicht, die alle Datenbankoperationen kapselt. Du arbeitest nie direkt mit SQL, sondern mit Repositories und Criteria-Objekten. Das Ergebnis: deine Queries laufen database-agnostisch, sind testbar und nutzen automatisch Shopware's Permission-System.
Eigene Entitäten registrierst du als EntityDefinition — Shopware generiert daraus automatisch das Routing, die Admin-API und die DAL-Anbindung. Du beschreibst einmal, was deine Entität ist, und bekommst dafür den kompletten CRUD-Stack geschenkt.
Events und Subscriber
Das Shopware Event-System basiert auf dem Symfony EventDispatcher. Du kannst auf jeden Schritt im Bestellprozess, Checkout, Produktladung oder Admin-Aktion reagieren — ohne Core-Dateien zu verändern.
Subscriber werden über services.xml als Services registriert und bekommen Dependencies automatisch injiziert. Das ist einer der größten Unterschiede zu Shopware 5: statt globaler Events ohne DI hast du jetzt saubere, testbare Klassen mit expliziten Abhängigkeiten.
Storefront und Twig
Die Storefront nutzt Twig-Templates mit einem Block-System. Du überschreibst nur die Blöcke, die du anpassen willst — der Rest bleibt unverändert. Das ermöglicht saubere Update-Kompatibilität: Solange Shopware die Block-Struktur behält, überleben deine Template-Überschreibungen das nächste Update.
Für eigene Daten in der Storefront gibt es zwei Wege: du ergänzt bestehende Page-Loader via Events (für Daten auf Standard-Seiten), oder du registrierst einen eigenen StorefrontController mit Route (für neue Seiten).
Admin-Erweiterungen mit Vue.js
Das Shopware-Admin ist eine Vue.js Single-Page-Application. Du erweiterst es durch JavaScript-Module, die du im Plugin unter src/Resources/app/administration/ ablegst. Shopware scannt alle aktiven Plugins nach einer main.js und bindet sie in den Admin-Build ein.
Du kannst bestehende Komponenten überschreiben oder komplett neue Seiten und Module registrieren. Das Ergebnis integriert sich optisch und funktional nahtlos in den Shopware-Admin — für den Nutzer wirkt es wie ein nativer Admin-Bereich.
Was das für die Praxis bedeutet
Shopware 6 ist gut durchdacht und bietet saubere Erweiterungspunkte für fast jeden Use Case. Die Lernkurve ist real — wer aber das System einmal verstanden hat, kann Plugins bauen, die updatestabil laufen und sich nahtlos ins Ökosystem einfügen.
Ich entwickle Shopware-Plugins mit mehreren im Marketplace-Prozess — darunter Tools für Shop-Monitoring, SEO-Automatisierung und Promotion-Management. Wenn du ein Plugin brauchst oder mit der Architektur nicht weiterkommst: Meld dich gerne.
Kommentare
Kommentar hinterlassen
Weitere Beiträge
Cerberus Produkt des Monats — Automatische Produkt-Highlights für Shopware 6.7
Ein Shopware 6.7 CMS-Element, das monatliche Produkt-Highlights automatisiert — 12 Monate vorausplanbar, automatischer Wechsel, Rabattpreise mit Streichpreis und drei Layout-Modi.