Das unterschätzte Risiko beim Deinstallieren von Shopware-Erweiterungen

Shopware 6 bietet im Experience Builder eine Vielzahl leistungsstarker CMS-Elemente: Texte, Bilder, Slider, Produktlisten, Formulare und mehr. Wer noch mehr Funktionalität braucht, kann auf zahlreiche Erweiterungen aus dem Shopware Store zurückgreifen: zum Beispiel Countdown-Timer, Accordion-Klappen, Trust-Badges oder individuelle Produktdarstellungen.

Doch irgendwann stellen sich diese Fragen: Welche Erweiterungen werden noch wirklich benötigt? Können einige Plugins deinstalliert werden? Genau hier lauert eine häufig übersehene Gefahr: Werden Erweiterungen einfach deinstalliert, bleiben die Inhalte entweder leer oder es kommt, im schlimmsten Fall, zu Darstellungsfehlern, die für deine Kunden direkt sichtbar sind.

Die gute Nachricht: Mit nur zwei einfachen SQL-Abfragen kannst du sicherstellen, dass alle verwaisten CMS-Elemente sauber entfernt werden. Ohne dass deine Seiten darunter leiden.

Schritt 1: Übersicht – Welche CMS-Element-Typen werden im Shop verwendet?

Bevor du gezielt nach Elementen einer bestimmten Erweiterung suchst, verschaffst du dir zunächst eine vollständige Übersicht aller CMS-Slot-Typen, die aktuell im Shop in Verwendung sind:

SELECT
   t1.type,
   COUNT(*) AS anzahl
FROM cms_slot t1
GROUP BY t1.type
ORDER BY anzahl DESC;

Das Ergebnis zeigt dir eine Tabelle mit zwei Spalten:

  • type – der technische Name des CMS-Elements (z.B. image, text, product-slider oder bei Erweiterungen oft mit Vendor-Prefix wie swag-cms-extensions-quickview)
  • anzahl – wie oft dieses Element insgesamt im Shop eingesetzt wird

Elemente, die von Erweiterungen stammen, erkennst du in der Regel am Vendor-Präfix – häufig die Abkürzung des Herstellers, gefolgt vom Elementnamen. In der Dokumentation oder den Plugin-Dateien der jeweiligen Erweiterung findest du die genauen Typnamen.

Schritt 2: Gezielt prüfen – Auf welchen Seiten wird das Element noch verwendet?

Sobald du den Typnamen des Elements kennst, das zur zu deinstallierenden Erweiterung gehört, ermittelst du mit dieser Abfrage alle CMS-Seiten, auf denen es noch eingesetzt wird:

SELECT DISTINCT
   t4.cms_page_id,
   t4.name
FROM
   `cms_slot` t1
INNER JOIN cms_block t2 ON (
   t1.cms_block_id = t2.id
)
INNER JOIN cms_section t3 ON (
   t2.cms_section_id = t3.id
)
INNER JOIN cms_page_translation t4 ON (
   t3.cms_page_id = t4.cms_page_id
   AND t4.language_id = 0x2fbb5fe2e29a4d70aa5854ce7ce3e20b
)
WHERE t1.type = "HIER_DEN_TYP_EINSETZEN";

Ersetze „HIER_DEN_TYP_EINSETZEN“ durch den Typnamen aus Schritt 1, zum Beispiel:

WHERE t1.type = "swag-cms-extensions-quickview";

Das Ergebnis ist eine Liste aller Erlebniswelten und CMS-Seiten, auf denen dieses Element noch aktiv platziert ist – mit ID und lesbarem Seitennamen.

Wie die Abfrage funktioniert

Shopware 6 speichert alle CMS-Inhalte in einer hierarchischen Struktur in der Datenbank:

CMS-Seite  →  Abschnitt (Section)  →  Block  →  Slot (Inhalt)

Die Abfrage in Schritt 2 traversiert diese Hierarchie von unten nach oben: Sie beginnt bei den Slots mit dem gesuchten Typ, folgt den Verknüpfungen über Blöcke und Abschnitte bis zur Seite und holt aus der Übersetzungstabelle den lesbaren Seitennamen. Das „DISTINCT“ stellt sicher, dass jede Seite nur einmal erscheint, auch wenn sie das Element mehrfach enthält.

Die Sprachfilterung mit „0x2fbb5fe2e29a4d70aa5854ce7ce3e20b“ entspricht der Konstante „Defaults::LANGUAGE_SYSTEM“ aus dem Shopware-Quellcode – diese UUID ist in jeder Shopware-Installation identisch und muss nicht angepasst werden.

Der empfohlene Workflow vor jeder Plugin-Deinstallation

  • Schritt 1 ausführen – Übersicht aller verwendeten CMS-Element-Typen erstellen
  • Typnamen identifizieren – Elemente der zu deinstallierenden Erweiterung in der Liste finden
  • Schritt 2 ausführen – Für jeden gefundenen Typ prüfen, auf welchen Seiten er noch verwendet wird
  • Seiten bereinigen – Die betroffenen Seiten im Experience Builder öffnen und die Elemente entfernen oder ersetzen
  • Erweiterung deinstallieren – Jetzt sicher, ohne das Risiko leerer oder fehlerhafter Seitenbereiche

Weitere Situationen, in denen diese Abfragen nützlich sind

Die beiden SQL-Abfragen helfen nicht nur bei Deinstallationen. Sie sind genauso wertvoll in diesen Szenarien:

  • DSGVO-Audit: Über CMS-Elemente werden oft externe Dienste eingebunden – Videos, Karten, Chat-Widgets. Eine Übersicht aller verwendeten Typen ist der erste Schritt, um alle datenschutzrelevanten Einbindungen zu erfassen.
  • Theme-Wechsel oder Redesign: Seiten mit Drittanbieter-Elementen müssen bei einem Theme-Wechsel besonders sorgfältig geprüft werden, da diese Elemente nicht automatisch mit dem neuen Theme kompatibel sein müssen.
  • Shopware-Update: Nach einem Major-Update können Elemente von Drittanbieter-Plugins veraltet oder inkompatibel sein. Schritt 1 zeigt dir sofort, welche Fremd-Elemente überhaupt im Einsatz sind.
  • Agenturübergaben: Wer einen Shop übernimmt, bekommt mit Schritt 1 in Sekunden eine vollständige Übersicht aller installierten und tatsächlich genutzten CMS-Komponenten
  • Sicherheits-Check: Nach einem verdächtigen Zugriff lassen sich über CMS-Slots eingeschleuste externe Skripte gezielt aufspüren.

Wichtige Hinweise

Nur lesende Abfragen: Beide SQL-Befehle verwenden ausschließlich „SELECT“ – sie verändern keine Daten. Dennoch sollte der Datenbankzugang grundsätzlich nur autorisierten Personen möglich sein. Führe Abfragen im Zweifel auf einer Datenbankkopie (Backup) aus.

Für den Zugriff auf die Shopware-Datenbank eignen sich:

  • phpMyAdmin – meist direkt im Hosting-Panel verfügbar
  • TablePlus oder DBeaver – komfortable Desktop-Tools
  • Dein Shopware-Entwickler oder deine Agentur– sie können die Abfragen für dich ausführen und die Ergebnisse interpretieren

Fazit: Erst prüfen, dann deinstallieren

Plugins und Erweiterungen zu deinstallieren, ohne vorher zu prüfen, ob ihre CMS-Elemente noch im Einsatz sind, ist eines der häufigsten Versehen bei der Shopware-Pflege. Die gute Nachricht: Mit den zwei SQL-Abfragen aus diesem Beitrag lässt sich das in wenigen Minuten klären – ganz ohne Programmieraufwand und ohne stundenlangem Durchklicken des Backends.

Der sichere Weg lautet immer: erst prüfen, dann deinstallieren.

Tags: Shopware 6, CMS, Experience Builder, Plugin deinstallieren, Erweiterungen, SQL, Datenbank, Shop-Management, Shopware Store

Nach oben scrollen