Shopware 6 Plugin entwickeln: Schritt-für-Schritt
Pascal Swertz · · ca. 10 min Lesezeit
Shopware 6 Plugin entwickeln – das klingt für Einsteiger komplex. Dieses Tutorial zeigt dir den gesamten Prozess: von der Plugin-Basis über Services, Events und Subscriber bis zur eigenen Admin-Oberfläche mit Vue.js.
Voraussetzungen
Um ein Shopware 6 Plugin zu entwickeln, benötigst du:
- PHP 8.1 oder höher
- Composer installiert
- Eine lokale Shopware 6 Entwicklungsumgebung (z. B. mit DDEV oder Docker)
- Grundkenntnisse in PHP und dem Symfony-Framework
Shopware 6 basiert auf Symfony – wer das Framework kennt, findet sich schnell zurecht. Plugins folgen dem Symfony-Bundle-Konzept und nutzen Dependency Injection, Services und Events.
Schritt 1: Plugin-Struktur anlegen
Ein Shopware 6 Plugin lebt im Verzeichnis
custom/plugins/. Die minimale Struktur sieht so aus:
custom/plugins/MeinPlugin/
├── src/
│ └── MeinPlugin.php
└── composer.json
Die Hauptklasse erbt von
Shopware\Core\Framework\Plugin. In der
composer.json definierst du Name, Autoloading und die
Abhängigkeit zu shopware/core.
Schritt 2: Plugin registrieren und aktivieren
Nach dem Anlegen der Dateien installierst und aktivierst du das Plugin über die Shopware-CLI:
bin/console plugin:refresh
bin/console plugin:install --activate MeinPlugin
Alternativ kannst du das Plugin im Admin-Bereich unter Erweiterungen → Meine Erweiterungen aktivieren. Bei jeder Codeänderung im DI-Bereich musst du den Cache leeren:
bin/console cache:clear
Schritt 3: Services und Dependency Injection
Services registrierst du in einer services.xml unter
src/Resources/config/services.xml. Shopware nutzt den
Symfony DI-Container – Services, Repositories und eigene Handler
werden hier eingetragen:
<services>
<service id="MeinPlugin\Service\MeinService">
<argument type="service" id="product.repository"/>
</service>
</services>
Das Produkt-Repository ist eines der am häufigsten genutzten Repositories in Shopware-Plugins. Über den Data Abstraction Layer (DAL) greifst du auf alle Entities zu.
Schritt 4: Events und Subscriber
Shopware 6 nutzt das Symfony EventDispatcher-System. Für eigene Logik bei Shop-Ereignissen (z. B. Bestellungsabschluss, Produktspeicherung) implementierst du einen Subscriber:
class MeinSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
CheckoutOrderPlacedEvent::class => 'onOrderPlaced',
];
}
public function onOrderPlaced(CheckoutOrderPlacedEvent $event): void
{
// Deine Logik hier
}
}
Der Subscriber wird in der services.xml mit dem Tag
kernel.event_subscriber registriert. So greifst du
sauber in den Shopware-Lifecycle ein, ohne Core-Klassen zu
überschreiben.
Schritt 5: Admin-Oberfläche mit Vue.js
Für Admin-Erweiterungen nutzt Shopware 6 das eigene Vue.js-basierte Admin-Framework. Eine einfache Admin-Seite entsteht unter:
src/Resources/app/administration/src/
├── main.js
└── module/
└── mein-modul/
├── index.js
└── page/
└── mein-page/
└── index.vue
In der main.js registrierst du das Modul. Shopware
baut die Admin-Assets über Webpack – nach Änderungen musst du mit
bin/console administration:build neu bauen oder den
Watch-Modus nutzen.
Schritt 6: Store API – Eigene Endpoints
Eigene API-Routen für die Storefront implementierst du über
AbstractRoute-Klassen und registrierst sie als Store
API-Controller. Dies ist besonders relevant für AJAX-Requests aus
der Storefront oder für Headless-Commerce-Szenarien.
Häufige Fehler bei der Shopware Plugin-Entwicklung
-
Cache nicht geleert: Nach DI-Änderungen immer
cache:clearausführen. -
Falsche Plugin-Version: Die Shopware-Version
muss in der
composer.jsondes Plugins angegeben sein. - Core überschreiben statt erweitern: Nutze Decorator-Pattern und Events statt Core-Klassen zu verändern – so bleibt das Plugin updatefähig.
- Keine Dokumentation: Für Agentur-Übergaben ist technische Dokumentation essenziell.
Fazit
Shopware 6 Plugin-Entwicklung folgt dem Symfony-Standard – wer das Framework kennt, kann produktiv einsteigen. Der Schlüssel liegt in sauberer Domänenlogik: Services, Subscriber und Admin-Module klar trennen, Core nie direkt überschreiben und Plugins immer mit Blick auf Updatefähigkeit schreiben.
Du möchtest ein Shopware Plugin entwickeln lassen oder brauchst Unterstützung bei einem bestehenden Projekt? Jetzt Anfrage stellen.
Professionelle Plugin-Entwicklung gesucht?
Erfahre mehr über meine Shopware Plugin-Entwicklung – individuelle Plugins, ERP-Schnittstellen, Admin-Module und Checkout-Erweiterungen.
Zur Plugin-Entwicklung