PLUGIN-ENTWICKLUNG

Ihr erstes Shopware 6 Plugin erstellen

Von Huzaifa Mustafa 10 Min. Lesezeit 8. Januar 2026

Schnelle Antwort

Die Erstellung eines eigenen Plugins ist die wichtigste Fähigkeit zur Erweiterung von Shopware 6. Ein "Plugin" in Shopware 6 ist im Wesentlichen ein Symfony-Bundle mit zusätzlichen Metadaten. So starten Sie am schnellsten:

php bin/console plugin:create MyFirstPlugin

Dieser Befehl erstellt alles, was Sie brauchen, in custom/plugins/MyFirstPlugin. Dann installieren und aktivieren Sie mit plugin:install --activate.

Shopware 6 basiert auf einem modernen Tech-Stack: Symfony 6+, Vue.js 3 und Twig. Im Gegensatz zu Shopware 5 setzt es stark auf Standard-Symfony-Bundles. Diese Architektur bedeutet, dass die Plugin-Entwicklung bekannten Symfony-Mustern folgt und für PHP-Entwickler mit Framework-Erfahrung zugänglich ist.

Diese Anleitung behandelt alles, was Sie zur Erstellung Ihres ersten Plugins benötigen: die einfache CLI-Methode, die manuelle Einrichtung (für tieferes Verständnis), Lifecycle-Hooks und kritische Produktionsoptimierungen.

1. Der einfache Weg: CLI-Generator verwenden

Shopware bietet einen Konsolenbefehl, um Plugins sofort zu erstellen. Dies verhindert menschliche Fehler in Verzeichnisstrukturen und stellt sicher, dass alle erforderlichen Dateien korrekt erstellt werden.

Schritt 1: Terminal öffnen

Navigieren Sie zu Ihrem Shopware-Stammverzeichnis, wo sich bin/console befindet.

Schritt 2: Erstellungsbefehl ausführen

php bin/console plugin:create MyFirstPlugin

Was wird erstellt

Dies erstellt folgende Struktur in custom/plugins/MyFirstPlugin:

custom/plugins/MyFirstPlugin/
├── src/
│   └── MyFirstPlugin.php    # Die Haupt-Einstiegsklasse
└── composer.json            # Metadaten und Autoloading

Profi-Tipp: Der CLI-Generator übernimmt die Namespace-Konfiguration und PSR-4-Autoloading automatisch. Für benutzerdefinierte oder komplexe Plugins sollten Sie den manuellen Einrichtungsprozess unten verstehen.

2. Die manuelle Einrichtung (Funktionsweise verstehen)

Das Verständnis der manuellen Einrichtung hilft Ihnen beim Debuggen von Problemen und beim Anpassen von Plugins über das Standard-Gerüst hinaus. Die kritische Datei ist composer.json - sie teilt Shopware mit "Ich existiere."

Die composer.json-Datei

Erstellen Sie custom/plugins/MyFirstPlugin/composer.json:

{
  "name": "my-vendor/my-first-plugin",
  "description": "Mein erstes Shopware 6 Plugin",
  "type": "shopware-platform-plugin",
  "version": "1.0.0",
  "license": "MIT",
  "autoload": {
    "psr-4": {
      "MyVendor\\MyFirstPlugin\\": "src/"
    }
  },
  "extra": {
    "shopware-plugin-class": "MyVendor\\MyFirstPlugin\\MyFirstPlugin",
    "label": {
      "de-DE": "Mein erstes Plugin",
      "en-GB": "My First Plugin"
    }
  }
}

Wichtiger Hinweis: Die Zeile extra.shopware-plugin-class ist kritisch. Sie zeigt Shopware auf Ihre Haupt-Bootstrap-Datei. Wenn dies falsch ist, wird Ihr Plugin nicht erkannt.

Die Konfiguration verstehen

  • type: Muss shopware-platform-plugin sein, damit Shopware es erkennt
  • autoload.psr-4: Ordnet Ihren Namespace dem src/-Verzeichnis zu
  • extra.label: Plugin-Name im Admin-Panel (unterstützt mehrere Sprachen)

3. Die Bootstrap-Klasse

Die Bootstrap-Klasse ist der Einstiegspunkt für Ihr Plugin. Sie erweitert die Kern-Plugin-Klasse und ermöglicht es Ihnen, Code während der Installation, Updates oder Deinstallation auszuführen (z.B. Datenbanktabellen erstellen).

Die Haupt-Plugin-Datei erstellen

Erstellen Sie custom/plugins/MyFirstPlugin/src/MyFirstPlugin.php:

<?php declare(strict_types=1);

namespace MyVendor\MyFirstPlugin;

use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\InstallContext;

class MyFirstPlugin extends Plugin
{
    public function install(InstallContext $installContext): void
    {
        // Logik zur Ausführung während der Installation (z.B. Tabelle erstellen)
        parent::install($installContext);
    }
}

Verfügbare Lifecycle-Methoden

Die Plugin-Klasse bietet mehrere Lifecycle-Methoden, die Sie überschreiben können:

  • install(): Wird aufgerufen, wenn das Plugin zum ersten Mal installiert wird
  • update(): Wird beim Update auf eine neue Version aufgerufen
  • uninstall(): Wird beim Entfernen des Plugins aufgerufen
  • activate() / deactivate(): Wird beim Umschalten des Plugin-Status aufgerufen

4. Ihr Plugin installieren und aktivieren

Sobald Ihre Dateien vorhanden sind, müssen Sie das Plugin mit Konsolenbefehlen bei Shopware registrieren.

Schritt 1: Plugin-Liste aktualisieren

Weisen Sie Shopware an, nach neuen Plugins zu suchen:

php bin/console plugin:refresh

Schritt 2: Installieren und aktivieren

Installieren und aktivieren Sie in einem Befehl:

php bin/console plugin:install --activate MyFirstPlugin

Schritt 3: Cache leeren

Leeren Sie immer den Cache nach Strukturänderungen:

php bin/console cache:clear

Überprüfung: Ihr Plugin sollte jetzt im Shopware-Admin unter Einstellungen > System > Plugins erscheinen. Sie können dies auch mit php bin/console plugin:list überprüfen.

5. Entwicklungs-Workflow: Hot Reloading

Wenn Sie Storefronts (CSS/JS) oder Administration-Module entwickeln, möchten Sie nicht jedes Mal manuell Assets kompilieren. Verwenden Sie die "Hot Module Replacement"-Watcher:

Für Storefront (Frontend)

./bin/watch-storefront.sh

Für Administration (Backend)

./bin/watch-administration.sh

Diese Watcher kompilieren Assets automatisch neu, wenn Sie Dateien ändern, und geben Ihnen nahezu sofortiges Feedback während der Entwicklung.

Profi-Tipp: Für noch schnellere Builds sollten Sie shopware-cli verwenden, das esbuild nutzt und den Admin-Watcher in unter einer Sekunde starten kann. Siehe unsere Shopware CLI Anleitung für Details.

6. Produktions-Performance-Checkliste

Shopware 6 ist funktionsreich, kann aber ohne Optimierung schwer sein. Überprüfen Sie vor dem Go-Live diese kritischen Punkte:

1 Umgebungskonfiguration

Stellen Sie sicher, dass Ihre .env-Datei auf Produktionsmodus eingestellt ist:

APP_ENV=prod

2 HTTP-Cache aufwärmen

Überprüfen Sie, ob der HTTP-Cache aktiv ist, und wärmen Sie ihn auf:

php bin/console cache:http:warm-up

3 Message-Queue-Konfiguration

Führen Sie Aufgaben nicht synchron aus. Verwenden Sie die Message-Queue (RabbitMQ oder Doctrine), um schwere Aufgaben im Hintergrund zu verarbeiten:

  • E-Mail-Versand
  • Produkt-Indexierung
  • Import/Export-Operationen

Kurzreferenz-Befehle

Plugin-Erstellung

  • plugin:create PluginName
  • plugin:refresh
  • plugin:install --activate PluginName

Cache-Verwaltung

  • cache:clear
  • cache:http:warm-up

Entwicklung

  • ./bin/watch-storefront.sh
  • ./bin/watch-administration.sh

Plugin-Verwaltung

  • plugin:list
  • plugin:uninstall PluginName
  • plugin:update PluginName

Brauchen Sie Hilfe beim Erstellen eines eigenen Plugins?

Ob Sie Zahlungs-Gateways, benutzerdefinierte Themes oder komplexe Integrationen erstellen - erhalten Sie fachkundige Beratung von einem zertifizierten Shopware-Entwickler.

Mit einem Entwickler sprechen