Erlebniswelten Transfer: Staging zu Live mit Vorschau und Rollback
Erlebniswelten im Staging bauen, abnehmen lassen und per Klick live stellen: Vorschau mit Konfliktprüfung, Medien ohne Dubletten und Rückroll-Punkt vor jedem Import.
Auf dieser Seite
- Einleitung
- Was du mit diesem Plugin erreichst
- Für wen ist dieses Plugin?
- Installation
- Erste Schritte
- Einstellungen
- Karte „Allgemein“
- Karte „Verbindung zum Staging-System“
- Karte „Quelle (Staging-System)“
- Karte „Import“
- So verbindest du Live und Staging
- Schritt 1: Einrichtungsassistent im Live-Shop
- Schritt 2: Einrichtungscode im Staging-Shop einfügen
- Schritt 3: Verbindung testen
- Was passiert, wenn du den Staging-Shop neu aus dem Live-Shop kopierst?
- Ohne Assistent einrichten
- So exportierst du Erlebniswelten im Staging
- Einzelnes Layout aus der Liste exportieren
- Mehrere Layouts auf einmal exportieren
- Aus dem Layout-Editor exportieren
- So übernimmst du Erlebniswelten im Live-Shop
- Per Datei importieren
- Per Staging-Abgleich übernehmen
- CMS-Erweiterungen auf Staging und Live
- Warum das wichtig ist
- Was der Transfer prüft
- Was in welchem Fall passiert
- Was der Transfer nicht prüfen kann
- Unsere Empfehlung
- So behältst du deine Transfers im Blick
- Die Transfer-Übersicht
- Die Details eines Transfers
- Wenn ein Transfer fehlgeschlagen ist
- Einträge aus einer Shop-Kopie
- So rollst du einen Transfer zurück
- Schritt für Schritt
- Wann Zurückrollen nicht möglich ist
- Berechtigungen für dein Team
- Die drei Rechte des Plugins
- Zusätzliche Rechte für die Einrichtung
- Datenschutz
- Fehlerbehebung
- Der Menüpunkt „Erlebniswelten-Transfer“ fehlt
- Der Shop zeigt „System nicht zugeordnet“
- Der Staging-Abgleich meldet „Verbindung zum Staging-System fehlt“ oder „Staging-System nicht erreichbar“
- „Elementtyp … ist im Zielsystem nicht installiert“, der Import lässt sich nicht starten
- „Gerade läuft ein anderer Transfer“
- „Die Vorschau ist abgelaufen“ oder „Das Zielsystem hat sich seit der Vorschau geändert“
- Die Datei wird beim Hochladen abgewiesen
- Der Status im Staging-Abgleich bleibt auf „wird berechnet“
- Die Daten wurden übertragen, aber die Seite im Shop zeigt noch den alten Stand
- Der Einrichtungscode wird nicht angenommen
- „Zum Importieren von Paketen brauchen Sie … das Recht „Erlebniswelten importieren und zurückrollen““
- FAQ
- Für Administratoren / Technische Details
- Systemanforderungen
- Hintergrundverarbeitung
- Mehrere App-Server
- Verzeichnisschutz auf dem Staging-Shop
- Protokoll
- Technische Rechte-IDs
- Kommandozeile
- Installation über die Kommandozeile
- Deinstallation
- Anhang für Entwickler: Eigene CMS-Elemente anbinden
- Wozu die Schnittstelle da ist
- Ablauf im Überblick
- Das Interface
- Registrierung
- Beispiel: Grid-Container mit Vorlagen
- Events für leichte Anpassungen
- Formatversionen
- Wenn der Provider im Ziel fehlt
- Fehlerverhalten
- Testen
Einleitung
Mit dem Erlebniswelten Transfer baust du Erlebniswelten in deinem Staging-Shop, lässt sie dort abnehmen und übernimmst sie mit wenigen Klicks in deinen Live-Shop. Niemand muss eine Seite im Live-Shop noch einmal Block für Block nachbauen.
Was du mit diesem Plugin erreichst
- Live geht, was abgenommen wurde. Das Plugin überträgt das komplette Layout mit allen Sektionen, Blöcken, Elementen, Übersetzungen und Bildern.
- Du siehst vorher, was passiert. Eine Vorschau zeigt je Layout, ob es neu angelegt oder ersetzt wird, was sich ändert und welche Bilder dazukommen.
- Du verlierst keine Arbeit im Live-Shop. Hat jemand ein Layout seit dem letzten Transfer direkt im Live-Shop geändert, warnt dich das Plugin, bevor es überschrieben wird.
- Ein Klick zurück. Vor jedem Import sichert das Plugin den bisherigen Stand. Gefällt dir das Ergebnis nicht, rollst du den Transfer zurück.
- Bilder kommen mit, aber nur einmal. Ist dieselbe Datei im Live-Shop schon vorhanden, verwendet das Plugin sie wieder, statt eine Dublette anzulegen.
- Zwei Wege, ein Ablauf. Du überträgst per ZIP-Datei oder lässt den Live-Shop die Layouts direkt beim Staging-Shop abholen. Beide Wege enden in derselben Vorschau.
Für wen ist dieses Plugin?
Für Shop-Betreiber, Agenturen und Marketing-Teams, die neue Seiten, Kampagnen und Landingpages in einem Staging-Shop vorbereiten und abnehmen lassen, bevor sie live gehen. Das Plugin ist für das übliche Setup gebaut, bei dem der Staging-Shop eine Kopie des Live-Shops ist.
Gut zu wissen: Das Plugin überträgt Erlebniswelten und Landingpages, keine Produkte, Kategorien oder Theme-Dateien. Es muss im Staging-Shop und im Live-Shop installiert sein.
Installation
Nach dem Kauf steht dir das Plugin direkt in deiner Administration zur Verfügung — du musst nichts herunterladen. Installiere es in beiden Shops: im Staging-Shop und im Live-Shop.
- Melde dich in deiner Shopware-Administration an (
DeinShop.de/admin) - Öffne Erweiterungen → Meine Erweiterungen
- Klicke neben Erlebniswelten Transfer: Staging zu Live mit Vorschau und Rollback auf Installieren
- Aktiviere das Plugin über den Schalter neben dem Eintrag — fertig.
Abb. 1: Das Plugin ist installiert und aktiv. Über „Konfigurieren“ gelangst du zu den Einstellungen.
Wiederhole die Schritte im zweiten Shop. Beide Shops sollten dieselbe Plugin-Version haben.
Taucht das Plugin nicht in der Liste auf, ist dein Shopware-Account noch nicht mit dem Shop verbunden. Das erledigst du unter Erweiterungen → Meine Erweiterungen im Reiter Shopware Account über die Anmeldung mit deinem Shopware-Konto.
Erste Schritte
Das Plugin muss wissen, welcher deiner Shops der Live-Shop und welcher der Staging-Shop ist. Das erkennt es an den beiden Adressen, die du einträgst, und vergleicht sie mit der eigenen Adresse des Shops. Daraus ergibt sich die Rolle des Shops:
- Live (Ziel): Dieser Shop übernimmt Erlebniswelten.
- Staging (Quelle): Dieser Shop stellt Erlebniswelten bereit.
- nicht zugeordnet: Es sind keine oder unpassende Adressen eingetragen. Export und Import per Datei funktionieren trotzdem.
So legst du los:
-
Einstellungen im Live-Shop öffnen: Gehe zu Erweiterungen → Meine Erweiterungen und klicke beim Plugin auf Konfigurieren.
-
Adressen eintragen: Trage in der Karte Allgemein die Adresse des Live-Systems und die Adresse des Staging-Systems ein und klicke auf Speichern.
-
Rolle prüfen: Der Hinweis oben in der Karte zeigt jetzt Rolle: Live (Ziel) und die eigene Adresse des Shops.
Abb. 2: Der Live-Shop erkennt seine Rolle an den eingetragenen Adressen. -
Verbindung einrichten: Wenn der Live-Shop die Layouts direkt beim Staging-Shop abholen soll, richte die Verbindung mit dem Einrichtungsassistenten ein (siehe So verbindest du Live und Staging). Für den Datei-Weg brauchst du keine Verbindung.
-
Ersten Transfer starten: Exportiere ein Layout im Staging-Shop (So exportierst du Erlebniswelten im Staging) und übernimm es im Live-Shop (So übernimmst du Erlebniswelten im Live-Shop).
Im Live-Shop findest du alle Funktionen unter Inhalte → Erlebniswelten-Transfer.
Einstellungen
Die Einstellungen findest du unter Erweiterungen → Meine Erweiterungen → beim Plugin auf Konfigurieren. Sie gelten für die ganze Installation, nicht für einzelne Verkaufskanäle. Nimm sie in jedem der beiden Shops vor.
Karte „Allgemein“
Dokumentation öffnen
Die Schaltfläche Dokumentation öffnen ganz oben bringt dich direkt zu dieser Anleitung.
Rollen-Hinweis
Der blaue Kasten darunter zeigt, in welcher Rolle der Shop gerade arbeitet, warum das so ist und welche eigene Adresse er hat. Steht dort System nicht zugeordnet, stimmen die eingetragenen Adressen nicht mit der eigenen Adresse des Shops überein.
Adresse des Live-Systems und Adresse des Staging-Systems
Hier trägst du die Adressen deiner beiden Shops ein, jeweils mit https://. Stimmt eine davon mit der eigenen Adresse des Shops überein, arbeitet er in dieser Rolle. Trage in beiden Shops dieselben zwei Adressen ein.
Das Plugin prüft die Adressen schon während der Eingabe. Unverschlüsselte Adressen (ohne https://) und zwei Adressen, die auf denselben Shop zeigen, werden nicht gespeichert. Du erkennst das am Hinweis Diese Adressen werden nicht gespeichert.
Wozu das gut ist: Durch die Rolle weiß jeder Shop, was er darf. Der Live-Shop übernimmt, der Staging-Shop liefert. Ein versehentlicher Import in den falschen Shop ist so ausgeschlossen.
Karte „Verbindung zum Staging-System“
Diese Karte brauchst du nur, wenn der Live-Shop die Layouts direkt beim Staging-Shop abholen soll. In der Regel füllt der Einrichtungsassistent die Felder für dich aus (siehe So verbindest du Live und Staging).
Abb. 3: Zugangsdaten für die Verbindung zum Staging-Shop
Zugangsschlüssel-ID und Geheimer Zugangsschlüssel
Mit diesen Zugangsdaten meldet sich der Live-Shop beim Staging-Shop an, um Erlebniswelten abzuholen. Sie gehören zur Integration „CMS-Transfer (Staging-Zugriff)“. Der geheime Schlüssel wird nicht erneut angezeigt und nie protokolliert.
Benutzer für Verzeichnisschutz (optional) und Passwort für Verzeichnisschutz (optional)
Nur nötig, wenn dein Staging-Shop zusätzlich mit einem Verzeichnisschutz (Benutzername und Passwort im Browser) gesichert ist. Der Bereich /api/ des Staging-Shops muss vom Verzeichnisschutz ausgenommen sein, sonst klappt der Abruf nicht. Das richtet in der Regel dein Hoster oder deine IT ein.
Zeitüberschreitung in Sekunden
So lange wartet der Live-Shop auf eine Antwort des Staging-Shops, bevor er aufgibt. Möglich sind 5 bis 300 Sekunden, voreingestellt sind 30. Erhöhe den Wert, wenn dein Staging-Shop langsam antwortet und Abrufe deshalb abbrechen.
Verbindung testen, Einrichtungsassistent und Einrichtungscode einfügen
Mit diesen Schaltflächen richtest du die Verbindung ein und prüfst sie. Wie das geht, steht in So verbindest du Live und Staging.
Karte „Quelle (Staging-System)“
Maximale Paketgröße in MB
Diese Einstellung wirkt im Staging-Shop. Sie legt fest, wie groß ein Paket höchstens werden darf, das der Staging-Shop für den Live-Shop schnürt. Voreingestellt sind 1024 MB. Ist eine Anfrage größer, scheitert sie mit einer Meldung. Übertrage dann weniger Layouts auf einmal oder nutze den Datei-Weg.
Karte „Import“
Die Einstellungen dieser Karte wirken im Live-Shop. Die ersten vier sind Vorauswahlen für den Import-Assistenten. Du kannst sie bei jedem Import noch ändern.
Abb. 4: Vorauswahlen für den Import-Assistenten und Aufbewahrungsfristen
Zuweisungen standardmäßig übernehmen
Ist der Schalter an, ordnet der Import die Layouts denselben Kategorien, Produkten, Landingpages und Verkaufskanal-Startseiten zu wie im Staging-Shop. Standardmäßig ist er aus. Schalte ihn ein, wenn du im Staging-Shop auch festlegst, wo ein Layout verwendet wird.
Standard-Layouts standardmäßig übernehmen
Ist der Schalter an, übernimmt der Import die Standard-Layouts für Kategorien und Produkte so, wie sie im Paket stehen. Standardmäßig ist er aus.
Landingpages standardmäßig übernehmen
Ist der Schalter an, legt der Import die Landingpages aus dem Paket an oder aktualisiert sie. Standardmäßig ist er aus.
Übersetzungen, die nur in diesem System existieren
Manchmal hat ein Layout im Live-Shop eine Übersetzung, die im Paket fehlt. Mit Behalten bleibt diese Übersetzung erhalten, du verlierst also nie Inhalte. Mit Entfernen wird sie gelöscht, damit das Layout danach genau dem Paket entspricht. Voreingestellt ist Behalten.
Maximale Paketgröße für Uploads (MB)
Größere Dateien weist der Upload im Live-Shop ab. Voreingestellt sind 1024 MB. Die Datei wird in Stücken zu 5 MB hochgeladen, deshalb spielt die Upload-Grenze deines Servers keine Rolle.
Rückroll-Pakete aufbewahren (Tage)
Vor jedem Import sichert das Plugin den bisherigen Stand in einem Rückroll-Paket. Nach dieser Anzahl Tage wird das Paket gelöscht, danach lässt sich der Transfer nicht mehr zurückrollen. Der Eintrag in der Transfer-Übersicht bleibt erhalten. Zulässig sind 1 bis 180 Tage, voreingestellt sind 90.
Transfer-Einträge aufbewahren (Tage)
Ältere Einträge der Transfer-Übersicht werden samt ihren Meldungen automatisch gelöscht. Zulässig sind 1 bis 180 Tage, voreingestellt sind 180. Der jüngste erfolgreiche Transfer je Layout bleibt immer stehen, denn auf ihm beruhen der Staging-Abgleich und die Warnung vor Änderungen im Live-Shop.
Klicke nach jeder Änderung auf Speichern.
So verbindest du Live und Staging
Was dir das bringt: Ist die Verbindung eingerichtet, holt der Live-Shop die Erlebniswelten selbst beim Staging-Shop ab. Du musst keine Dateien mehr herunter- und hochladen und siehst im Live-Shop jederzeit, was sich im Staging-Shop geändert hat.
Der Zugang entsteht im Live-Shop. Der Staging-Shop bekommt dabei nie Schreibrechte auf deinen Live-Shop: Er darf nur Erlebniswelten bereitstellen.
Wichtig: Für die Einrichtung braucht dein Benutzer einige zusätzliche Rechte. Bist du nicht Administrator, sieh in Berechtigungen für dein Team nach.
Schritt 1: Einrichtungsassistent im Live-Shop
-
Öffne im Live-Shop die Plugin-Konfiguration (Erweiterungen → Meine Erweiterungen → Konfigurieren).
-
Prüfe, dass beide Adressen eingetragen und gespeichert sind.
-
Scrolle in der Karte Verbindung zum Staging-System nach unten und klicke auf Einrichtungsassistent.
Abb. 5: Verbindung testen und Einrichtungsassistent im Live-Shop -
Es öffnet sich das Fenster Verbindung zum Staging-System einrichten. Lies den Hinweis und klicke auf Integration anlegen.
Abb. 6: Der Assistent legt die Integration „CMS-Transfer (Staging-Zugriff)“ an. -
Der Assistent speichert die Zugangsdaten in der Konfiguration und zeigt dir einen Einrichtungscode. Klicke auf Code kopieren.
Wichtig: Der Code wird nur dieses eine Mal angezeigt, nirgends gespeichert und ist 24 Stunden gültig. Er enthält den geheimen Schlüssel. Gib ihn nur über einen sicheren Weg weiter.
Führst du den Assistenten später erneut aus, ersetzt er die zuvor angelegte Integration. Der Staging-Shop braucht dann den neuen Code oder eine neue Kopie des Live-Shops. Nicht gespeicherte Änderungen auf der Konfigurationsseite gehen dabei verloren — speichere sie vorher.
Schritt 2: Einrichtungscode im Staging-Shop einfügen
-
Öffne im Staging-Shop die Plugin-Konfiguration. Der Hinweis zeigt dort Rolle: Staging (Quelle), sobald beide Adressen stimmen.
Abb. 7: Der Staging-Shop erkennt seine Rolle. -
Füge den Code in der Karte Verbindung zum Staging-System in das Feld Einrichtungscode einfügen ein.
-
Klicke auf Code übernehmen.
Abb. 8: Den Code aus dem Live-Shop im Staging-Shop einfügen
Das Plugin legt im Staging-Shop dieselbe Integration an und übernimmt die Adressen von Live- und Staging-Shop. Die Meldung bestätigt, dass der Shop jetzt als Staging arbeitet. Ist dein Staging-Shop noch gar nicht eingerichtet, trägt das Einfügen des Codes die Adressen gleich mit ein.
Schritt 3: Verbindung testen
Klicke im Live-Shop in der Karte Verbindung zum Staging-System auf Verbindung testen. Der Test prüft die gespeicherten Einstellungen, speichere Änderungen also vorher. Klappt alles, nennt die Meldung die Adresse des Staging-Shops, seine Shopware-Version und seine Plugin-Version.
Tipp: Laufen beide Shops mit unterschiedlichen Shopware-Versionen, weist dich der Test darauf hin. Übertragungen funktionieren trotzdem, im Live-Shop können aber neue Elementtypen fehlen.
Was passiert, wenn du den Staging-Shop neu aus dem Live-Shop kopierst?
Nichts Nachteiliges: Die Zugangsdaten stehen in der Konfiguration des Live-Shops und reisen mit jeder Kopie mit. Die Verbindung funktioniert danach ohne Nacharbeit. Der Staging-Shop zeigt einmalig den Hinweis Kopie des Live-Systems erkannt.
Ohne Assistent einrichten
Du kannst die Verbindung auch von Hand einrichten. Lege dazu im Staging-Shop unter Einstellungen → System → Integrationen eine Integration an, deren Rolle nur die Berechtigung Erlebniswelten exportieren hat. Trage deren Zugangsschlüssel-ID und geheimen Zugangsschlüssel im Live-Shop in der Karte Verbindung zum Staging-System ein, speichere und klicke auf Verbindung testen.
So exportierst du Erlebniswelten im Staging
Was dir das bringt: Du packst fertige Layouts samt Bildern in eine ZIP-Datei. Die lädst du im Live-Shop hoch. Dieser Weg funktioniert immer, auch wenn sich deine Shops gegenseitig nicht erreichen.
Tipp: Hast du die Verbindung aus So verbindest du Live und Staging eingerichtet, brauchst du keinen Export. Der Live-Shop holt die Layouts dann selbst ab (siehe Per Staging-Abgleich übernehmen).
Einzelnes Layout aus der Liste exportieren
-
Gehe im Staging-Shop zu Inhalte → Erlebniswelten.
-
Klicke beim gewünschten Layout auf die drei Punkte und wähle Exportieren.
Abb. 9: Export direkt aus der Liste der Erlebniswelten
Mehrere Layouts auf einmal exportieren
- Klicke in der Liste der Erlebniswelten oben rechts auf Mehrere exportieren ….
- Wähle im Fenster Erlebniswelten exportieren unter Layouts alle gewünschten Layouts aus.
- Lege fest, was zusätzlich mitkommen soll:
- Zuweisungen mitnehmen: Kategorien, Produkte, Landingpages und Verkaufskanal-Startseiten, die die Layouts nutzen.
- Standard-Layouts mitnehmen: die Standard-Layouts für Kategorien und Produkte dieses Shops.
- Landingpages mitnehmen: Landingpages, die eines der Layouts nutzen, mit ihren Adressen und Verkaufskanälen.
- Klicke auf Exportieren. Dein Browser lädt die ZIP-Datei herunter.
Abb. 10: Mehrere Layouts in ein Paket packen
Aus dem Layout-Editor exportieren
Hast du ein Layout gerade geöffnet, klicke oben rechts neben Speichern auf Exportieren.
Abb. 11: Export aus dem geöffneten Layout
Wichtig: Der Export enthält nur den gespeicherten Stand. Hast du ungespeicherte Änderungen, bittet dich das Plugin, das Layout zuerst zu speichern.
Jeder Export erscheint im Staging-Shop unter Inhalte → Erlebniswelten-Transfer als eigener Eintrag.
So übernimmst du Erlebniswelten im Live-Shop
Was dir das bringt: Bevor sich im Live-Shop etwas ändert, siehst du in einer Vorschau genau, was passiert. Erst wenn du alles bestätigt hast, übernimmt das Plugin die Layouts — und legt vorher automatisch einen Rückroll-Punkt an.
Du hast zwei Wege, die im selben Ablauf enden: Vorschau → Optionen → Ergebnis.
Per Datei importieren
Schritt für Schritt
-
Gehe im Live-Shop zu Inhalte → Erlebniswelten-Transfer und klicke auf Datei importieren.
-
Ziehe die ZIP-Datei aus dem Staging-Shop in den Bereich Transfer-Paket (.zip) oder klicke auf Datei auswählen.
-
Klicke auf Hochladen und prüfen. Das Plugin lädt die Datei hoch und prüft sie, bevor sich irgendetwas ändert.
Abb. 12: Paket hochladen. Die maximale Paketgröße steht direkt über dem Upload-Bereich.
Die Vorschau lesen
Nach der Prüfung zeigt dir die Karte Paket auf einen Blick, was im Paket steckt und was im Live-Shop passieren wird:
- Datei, Quelle und Shopware-Version der Quelle sagen dir, woher das Paket stammt.
- Layouts zeigt, wie viele Layouts neu angelegt, ersetzt oder unverändert bleiben.
- Medien zeigt, wie viele Bilder neu sind, wiederverwendet werden oder als gleiche Datei im Shop schon vorhanden sind.
- Landingpages zeigt, wie viele Landingpages neu angelegt oder aktualisiert werden.
Abb. 13: Zusammenfassung des Pakets
In der Karte Layouts im Paket klappst du jedes Layout auf. Dort siehst du, wie viele Sektionen, Blöcke und Elemente neu sind, geändert oder entfernt werden, und welche Medien dazugehören. Die Markierung neben dem Namen zeigt, ob das Layout Neu ist oder Ersetzt wird.
Abb. 14: Details je Layout
Steht neben einem Layout Hier geändert, hat jemand es seit dem letzten Transfer direkt im Live-Shop bearbeitet. Die Warnung darunter sagt dir, dass diese Änderungen überschrieben werden. Unter Bitte beachten findest du weitere Hinweise, zum Beispiel zu verwendeten CSS-Klassen oder dazu, dass Vorschaubilder neuer Medien im Hintergrund entstehen.
Abb. 15: Warnungen und Hinweise am Ende der Vorschau
Tipp: Verwendet ein Layout eigene CSS-Klassen, listet die Vorschau sie auf. Das passende Styling muss im Theme des Live-Shops vorhanden sein. Theme-Code kommt nicht per Transfer, sondern wie gewohnt über deine Entwicklung bzw. dein Deployment in den Shop.
Wichtig: Hat jemand eines der Layouts gerade im Live-Shop im Editor geöffnet, überschreibt er den Import beim nächsten Speichern. Die Vorschau weist mit Geöffnete Editoren schließen darauf hin. Sprich dich vorher kurz ab.
Ist alles in Ordnung, klicke auf Weiter zu den Optionen.
Vorschau verwerfen
Willst du das Paket doch nicht übernehmen, klicke auf Verwerfen. Es wird nichts geändert, und ein anderer Transfer kann sofort starten. Auch wenn du die Seite verlässt, wird eine offene Vorschau verworfen.
Abb. 16: Die Vorschau wurde verworfen, der Live-Shop ist unverändert.
Optionen wählen
In der Karte Optionen legst du fest, was zusätzlich zu den Layouts übernommen wird. Die Schalter sind mit deinen Vorauswahlen aus der Plugin-Konfiguration vorbelegt (siehe Einstellungen):
- Zuweisungen übernehmen: Die Layouts denselben Kategorien, Produkten, Landingpages und Verkaufskanal-Startseiten zuweisen wie im Staging-Shop.
- Standard-Layouts übernehmen: Die Standard-Layouts für Kategorien und Produkte wie im Paket setzen.
- Landingpages übernehmen: Die Landingpages des Pakets mit Adressen und Verkaufskanälen anlegen oder aktualisieren.
- Übersetzungen, die nur in diesem System existieren: Behalten verliert nie Inhalte, Entfernen macht ersetzte Layouts identisch mit dem Paket.
Abb. 17: Optionen des Imports
Warnungen bestätigen
In der Karte Bestätigung stehen alle Punkte, die du bewusst freigeben musst — etwa Änderungen in diesem System, die überschrieben werden oder weitere Warnungen. Setze bei jedem Punkt ein Häkchen oder klicke auf Alle bestätigen. Solange nicht alles bestätigt ist, bleibt Übernehmen ausgegraut.
Abb. 18: Ohne Bestätigung ist „Übernehmen“ gesperrt.
Abb. 19: Alles bestätigt, „Übernehmen“ ist aktiv.
Mit Zurück zur Vorschau kehrst du zur Vorschau zurück, mit Alle Bestätigungen zurücknehmen entfernst du alle Häkchen wieder.
Übernehmen und Ergebnis prüfen
Klicke auf Übernehmen. Das Plugin legt zuerst einen Rückroll-Punkt an und schreibt dann alle Layouts in einem Schritt. Die Seite aktualisiert sich dabei selbst. Danach erscheint Transfer … abgeschlossen.
Abb. 20: Der Transfer ist abgeschlossen, ein Rückroll-Punkt steht bereit.
In der Karte Ergebnis findest du den Transfer-Eintrag mit allen Details und Links zu den übernommenen Layouts. Unter Im Frontend stehen Links zu den Kategorien, die die Layouts nutzen. Mit Weitere Datei importieren startest du den nächsten Import.
Wichtig: Ein Import läuft immer ganz oder gar nicht. Tritt unterwegs ein Fehler auf, bleibt der Live-Shop unverändert, und bereits abgelegte Bilder werden wieder entfernt.
Per Staging-Abgleich übernehmen
Was dir das bringt: Du siehst im Live-Shop direkt, welche Layouts und Landingpages sich im Staging-Shop geändert haben, und übernimmst sie mit einem Klick — ohne Datei. Voraussetzung ist die Verbindung aus So verbindest du Live und Staging.
Unterschiede ansehen
- Gehe im Live-Shop zu Inhalte → Erlebniswelten-Transfer und klicke auf Staging-Abgleich.
- Die Karte Staging und Live im Vergleich zeigt alle Layouts. Im Reiter Landingpages siehst du die Landingpages.
Abb. 21: Staging und Live im Vergleich
Die Spalte Status sagt dir für jeden Eintrag, wie Staging und Live zueinander stehen:
- unverändert: Staging und Live sind gleich.
- im Staging geändert: Im Staging-Shop gibt es einen neueren Stand.
- nur im Staging: Das Layout gibt es im Live-Shop noch nicht.
- im Live geändert: Jemand hat das Layout im Live-Shop bearbeitet.
- beidseitig geändert: Das Layout wurde in beiden Shops geändert.
- verschieden (noch nie übertragen): Beide Shops haben das Layout, es wurde aber noch nie übertragen und ist unterschiedlich.
- nur im Live: Das Layout gibt es nur im Live-Shop. Solche Einträge werden nie automatisch gelöscht.
- wird berechnet: Das Plugin ermittelt den Status noch im Hintergrund. Die Liste lädt sich selbst neu.
Mit dem Schalter Nur geänderte blendest du alles aus, was gleich ist. Neu laden holt den aktuellen Stand, Verbindung testen prüft die Verbindung zum Staging-Shop.
Auswählen und übernehmen
-
Setze bei den gewünschten Layouts bzw. Landingpages ein Häkchen.
-
Klicke oben rechts auf Aus Staging übernehmen. Die Zahl in Klammern zeigt, wie viele Einträge ausgewählt sind.
Abb. 22: Auswahl für die Übernahme -
Der Live-Shop holt das Paket beim Staging-Shop ab. Die Seite Aus Staging übernehmen zeigt dabei den aktuellen Schritt. Danach öffnet sich dort die Vorschau.
-
Prüfe die Vorschau genauso wie beim Datei-Import: Karte Paket und Layouts im Paket.
Abb. 23: Zusammenfassung des abgeholten Pakets
Abb. 24: Details je Layout, inklusive wiederverwendeter Bilder -
Klicke auf Weiter zu den Optionen, wähle die Optionen, bestätige alle Warnungen und klicke auf Übernehmen.
-
Nach der Übernahme erscheint Transfer … abgeschlossen mit dem Ergebnis.
Abb. 25: Die Layouts sind übernommen, ein Rückroll-Punkt steht bereit.
Während ein Transfer läuft, zeigt das Plugin oben den Hinweis Transfer läuft, und weitere Importe sind gesperrt. Sobald der Transfer abgeschlossen ist, verschwindet der Hinweis wieder.
Wichtig: Solange eine Vorschau aus dem Staging-Abgleich offen ist, sind weitere Transfers gesperrt. Übernimm das Paket oder klicke auf Verwerfen — dann ist die Sperre sofort aufgehoben. Verlässt du die Seite, wird die Vorschau ebenfalls verworfen.
Tipp: Erreicht der Live-Shop den Staging-Shop einmal nicht, bleibt der Datei-Weg aus Per Datei importieren jederzeit verfügbar.
CMS-Erweiterungen auf Staging und Live
Was dir das bringt: Du kannst Layouts mit Elementen aus anderen Plugins (etwa Countdowns, Slider oder Formulare) gefahrlos übertragen. Fehlt dem Live-Shop etwas, merkst du es in der Vorschau — bevor sich im Live-Shop etwas ändert.
Warum das wichtig ist
Viele Shops nutzen neben den Standard-Elementen von Shopware zusätzliche CMS-Erweiterungen. Ein Layout, das du im Staging-Shop mit einem solchen Element baust, funktioniert im Live-Shop nur, wenn dort dieselbe Erweiterung installiert ist.
Der Erlebniswelten Transfer prüft das bei jedem Import, bevor im Live-Shop etwas geändert wird. Fehlt etwas, siehst du es in der Vorschau des Import-Assistenten. Der Live-Shop bleibt in diesem Fall unverändert.
Was der Transfer prüft
Für jedes Element und jeden Block im Paket schaut das Plugin nach, ob der Live-Shop diesen Typ kennt:
- Ein Element gilt als vorhanden, wenn der Live-Shop es darstellen oder mit Daten versorgen kann.
- Ein Block gilt als vorhanden, wenn der Live-Shop eine eigene Darstellung dafür hat.
Was in welchem Fall passiert
Ein Element fehlt im Live-Shop. Die Vorschau meldet den Fehler „Elementtyp „…“ ist im Zielsystem nicht installiert. Erweiterung installieren und erneut übertragen.“ Der Transfer ist dann gesperrt, auch eine Bestätigung hilft nicht. Das gilt für das ganze Paket: Enthält es fünf Layouts und nur eines nutzt das fehlende Element, wird keines übertragen. So kommt ein Transfer nie halb an.
Holst du das Paket über den Staging-Abgleich, zeigt die Seite Das Paket wurde abgewiesen und Es wurde nichts geändert. Über den Link öffnest du den Transfer-Eintrag. Dort steht der fehlende Elementtyp im Reiter Meldungen (siehe So behältst du deine Transfers im Blick).
Abb. 26: Der Live-Shop weist das Paket ab und bleibt unverändert.
So löst du es: Installiere die Erweiterung im Live-Shop und starte den Transfer erneut. Alternativ lässt du das betroffene Layout beim Export bzw. beim Abgleich weg.
Nur ein Block fehlt im Live-Shop. Die Vorschau zeigt die Warnung „Blocktyp „…“ ist im Zielsystem unbekannt; der Block wird ohne eigene Darstellung übernommen.“ Nach deiner Bestätigung wird das Layout übertragen. Die Elemente im Block funktionieren, nur dessen besondere Anordnung fehlt. Prüfe die Seite danach im Live-Shop.
Eine Erweiterung speichert eigene Daten. Manche Erweiterungen legen zusätzlich zum Layout eigene Daten an, zum Beispiel Vorlagen oder Formulare, und binden sich dafür an den Transfer an. Fehlt eine solche Erweiterung im Live-Shop, erscheint die Warnung „Erweiterung „…“ fehlt im Zielsystem; ihre Daten werden nicht übernommen.“ Das Layout geht nach deiner Bestätigung trotzdem rüber, die Zusatzdaten nicht. Ist die Erweiterung im Live-Shop älter als im Staging-Shop, meldet der Transfer das ebenfalls und bittet um ein Update im Live-Shop.
Was der Transfer nicht prüfen kann
- Ob die Erweiterung im Live-Shop für den Verkaufskanal eingeschaltet ist. Eine deaktivierte Erweiterung erkennt der Transfer als fehlend. Ist sie dagegen aktiv, aber in ihren eigenen Einstellungen für einen Verkaufskanal abgeschaltet, besteht sie die Prüfung — und die Seite zeigt den Inhalt in diesem Kanal nicht an.
- Ob die Erweiterung im Live-Shop dieselbe Version hat. Hat sie zwischen zwei Versionen ihre Einstellungen umgebaut, übernimmt der Transfer die Einstellungen aus dem Staging-Shop unverändert. Ausnahme: Die Erweiterung ist an den Transfer angebunden, dann meldet er Versionsunterschiede selbst.
Unsere Empfehlung
Halte Staging- und Live-Shop bei den CMS-Erweiterungen gleich: dieselben Erweiterungen, aktiv, in derselben Version. Installiere und aktiviere eine neue CMS-Erweiterung zuerst im Live-Shop und baue erst danach Layouts damit im Staging-Shop.
So behältst du deine Transfers im Blick
Was dir das bringt: Jeder Export, Import und jedes Zurückrollen landet mit Status, Meldungen und allen Details in einer Übersicht. So weißt du jederzeit, wer wann was übertragen hat — und warum ein Transfer nicht geklappt hat.
Die Transfer-Übersicht
Gehe zu Inhalte → Erlebniswelten-Transfer. Die Liste Transfers zeigt alle Einträge, den neuesten oben.
Abb. 27: Transfer-Übersicht im Live-Shop
- Nr.: die fortlaufende Nummer des Transfers, zum Beispiel T-13.
- Zeitpunkt, Layouts und Nutzer: wann, was und wer.
- Weg: Datei, Staging-Abruf, Kommandozeile oder Zurückrollen. Im Staging-Shop steht bei Abrufen des Live-Shops Von Live abgeholt.
- Status: läuft, erfolgreich, erfolgreich mit Hinweisen, fehlgeschlagen oder zurückgerollt.
- Hinweise: die Zahl der Warnungen und Fehler. Fährst du mit der Maus darüber, siehst du die Meldung.
Abb. 28: Die Meldung eines fehlgeschlagenen Transfers direkt in der Liste
Mit den Filtern Status, Weg, Zeitraum, Layout und Nutzer findest du einen bestimmten Transfer schnell. Die Filter stehen in der Adresszeile deines Browsers, du kannst den Link also an Kollegen weitergeben. Mit Filter zurücksetzen zeigst du wieder alle Einträge.
Über die drei Punkte am Ende einer Zeile öffnest du die Details. Ist ein Abruf aus dem Staging-Shop fehlgeschlagen, findest du dort auch Erneut ausführen.
Tipp: Ist seit deinem letzten Besuch ein Transfer fehlgeschlagen, weist dich das Plugin beim Öffnen der Übersicht mit Fehlgeschlagene Transfers darauf hin.
Die Details eines Transfers
Klicke auf eine Zeile, um die Details zu öffnen. Mit Zur Übersicht kommst du zurück.
Reiter „Übersicht“: Oben steht der Status. Die Karte Ergebnis in Zahlen zeigt, wie viele Layouts, Sections, Blöcke, Elemente und Medien neu, ersetzt, geändert, entfernt oder wiederverwendet wurden und wie viele Adressen umgeschrieben wurden. Darunter folgen der Ablauf, Quelle und Paket sowie die gewählten Optionen.
Abb. 29: Ergebnis in Zahlen
Reiter „Layouts“: Jedes übertragene Layout mit seiner Aktion (zum Beispiel neu oder ersetzt) und der Angabe, ob es einen Konflikt mit Änderungen im Live-Shop gab. Über einen Link öffnest du das Layout im Editor.
Abb. 30: Übertragene Layouts
Reiter „Medien“: Jedes Bild mit Vorschau, Dateiname, Aktion (zum Beispiel neu, wiederverwendet oder dedupliziert) und den Fundstellen. Über In der Medienverwaltung öffnen springst du direkt zum Bild.
Abb. 31: Übertragene Bilder
Reiter „Meldungen“: Alle Hinweise, Warnungen und Fehler des Transfers mit ihrer Fundstelle. Gab es keine, steht dort Keine Meldungen zu diesem Transfer.
Abb. 32: Ein Transfer ohne Meldungen
Reiter „Landingpages“: Erscheint nur, wenn mit dem Transfer Landingpages übertragen wurden. Er zeigt jede Landingpage mit ihren Adressen und Verkaufskanälen.
Reiter „Zurückrollen“: Hier siehst du, ob sich der Transfer zurückrollen lässt, und startest das Zurückrollen (siehe So rollst du einen Transfer zurück).
Abb. 33: Rückroll-Status und Rückroll-Paket
Wenn ein Transfer fehlgeschlagen ist
Ein fehlgeschlagener Transfer zeigt oben Transfer fehlgeschlagen und den Satz Es wurde nichts geändert: Der Import wurde vollständig zurückgenommen. Darunter stehen die Phase, in der der Fehler auftrat, die Meldung und eine Fehlerreferenz.
Abb. 34: Fehlgeschlagener Transfer mit Phase und Fehlerreferenz
Den genauen Grund findest du im Reiter Meldungen. Im Beispiel fehlt im Live-Shop ein Elementtyp: „Elementtyp „…“ ist im Zielsystem nicht installiert. Erweiterung installieren und erneut übertragen.“ Wie du das löst, steht in CMS-Erweiterungen auf Staging und Live. Mit den Filtern Code und Layout grenzt du bei vielen Meldungen die Liste ein.
Abb. 35: Die Meldung nennt den fehlenden Elementtyp.
Tipp: Brauchst du Hilfe vom Support, klicke neben der Fehlerreferenz auf Kopieren und schick uns die Referenz mit. Damit finden wir den Fehler im Protokoll sofort.
Einträge aus einer Shop-Kopie
Kopierst du deinen Live-Shop in den Staging-Shop, wandern auch die Einträge der Transfer-Übersicht mit. Das Plugin erkennt solche Einträge und kennzeichnet sie mit Kopie aus … und der Adresse des Ursprungs-Shops. Sie sind nur lesbar: Du kannst sie weder zurückrollen noch erneut ausführen.
So rollst du einen Transfer zurück
Was dir das bringt: Gefällt dir das Ergebnis eines Imports nicht, stellst du den vorherigen Stand mit wenigen Klicks wieder her — inklusive der Layouts und Landingpages, die der Import neu angelegt hat.
Schritt für Schritt
-
Öffne in der Transfer-Übersicht den Transfer, den du zurücknehmen willst.
-
Wechsle in den Reiter Zurückrollen. Steht dort Kann zurückgerollt werden., klicke auf Zurückrollen (siehe Abb. 33).
-
Es öffnet sich Transfer zurückrollen mit einer Vorschau. Sie zeigt, welche Layouts wiederhergestellt werden und unter Wieder entfernte Layouts, welche neu angelegten Layouts wieder verschwinden.
Abb. 36: Vorschau des Zurückrollens -
Bestätige eventuelle Warnungen und klicke auf Zurückrollen. Die Optionen sind dabei fest: Ein Zurückrollen stellt genau den gesicherten Stand wieder her.
-
Danach erscheint Transfer … abgeschlossen mit Der vorherige Stand wurde wiederhergestellt.
Abb. 37: Der vorherige Stand ist wiederhergestellt.
Das Zurückrollen erhält eine eigene Nummer und erscheint in der Übersicht mit dem Weg Zurückrollen. Im ursprünglichen Transfer steht danach unter Zurückgerollt durch, welcher Eintrag ihn zurückgenommen hat.
Wann Zurückrollen nicht möglich ist
Im Reiter Zurückrollen steht unter Rückroll-Status, warum es gerade nicht geht:
- Nur Importe können zurückgerollt werden. Exporte ändern nichts am Shop.
- Nur erfolgreiche Transfers können zurückgerollt werden. Ein fehlgeschlagener Import hat nichts geändert.
- Dieser Transfer wurde bereits zurückgerollt.
- Zuerst … zurückrollen. Es gibt einen neueren Transfer für dieselben Layouts. Rolle zuerst diesen zurück.
- Das Rückroll-Paket ist abgelaufen. Die Aufbewahrungsfrist aus der Plugin-Konfiguration ist vorbei.
- Dieser Eintrag stammt aus einer Kopie eines anderen Systems und kann hier nicht zurückgerollt werden.
Wichtig: Hat jemand ein Layout nach dem Transfer im Live-Shop geändert, warnt dich die Vorschau: Diese Änderungen gehen beim Zurückrollen verloren. Ein Layout, das noch einer Kategorie zugewiesen oder ein Standard-Layout ist, kann nicht entfernt werden — die Vorschau nennt dir das betroffene Layout.
Tipp: Mit Rückroll-Paket herunterladen sicherst du den Stand vor dem Import zusätzlich auf deinem Rechner.
Berechtigungen für dein Team
Was dir das bringt: Du legst genau fest, wer Transfers nur ansehen, wer im Staging-Shop exportieren und wer im Live-Shop übernehmen darf.
Die Rechte vergibst du unter Einstellungen → System → Benutzer & Rechte in der Karte Rollen. Öffne eine Rolle oder klicke auf Rolle erstellen.
Die drei Rechte des Plugins
- Ansehen: Unter Berechtigungen im Bereich Inhalte in der Zeile Erlebniswelten-Transfer. Damit sieht jemand die Transfer-Übersicht, die Details und den Staging-Abgleich.
- Erlebniswelten exportieren: Unter Zusätzliche Berechtigungen beim Eintrag Erlebniswelten-Transfer. Damit darf jemand Layouts im Staging-Shop exportieren.
- Erlebniswelten importieren und zurückrollen: Ebenfalls unter Zusätzliche Berechtigungen beim Eintrag Erlebniswelten-Transfer. Damit darf jemand Pakete importieren, aus dem Staging-Shop übernehmen, die Verbindung testen und Transfers zurückrollen.
Exportieren und Importieren setzen das Recht Ansehen voraus. Meldungen im Plugin nennen genau diese Bezeichnung.
Wichtig: Wer Erlebniswelten importieren und zurückrollen hat, kann über den Import Layouts, Zuweisungen, Standard-Layouts und Landingpages im Live-Shop überschreiben — auch wenn der Rollen-Editor bei dieser Berechtigung für Erlebniswelten nur Leserechte anzeigt. Vergib dieses Recht deshalb nur an Personen, die Inhalte im Live-Shop freigeben dürfen.
Zusätzliche Rechte für die Einrichtung
Der Einrichtungsassistent im Live-Shop und das Einfügen des Einrichtungscodes im Staging-Shop legen eine Integration samt Rolle an. Dafür braucht dein Benutzer zusätzlich zu Erlebniswelten importieren und zurückrollen diese Shopware-Rechte:
- unter Zusätzliche Berechtigungen → Einstellungen: Grundlegende Einstellungen (zum Speichern der Konfiguration),
- unter Berechtigungen → Einstellungen → Integrationen: Erstellen und Löschen,
- unter Berechtigungen → Einstellungen → Benutzer & Rechte: Erstellen und Löschen.
Beim Häkchen Erstellen setzt Shopware die dafür nötigen Häkchen bei Ansehen und Bearbeiten automatisch mit. Administratoren haben alle Rechte ohnehin. Fehlt etwas, nennt der Einrichtungsassistent die fehlenden Rechte. Bitte dann einen Administrator, sie deiner Rolle zuzuweisen.
Datenschutz
Das Transfer-Protokoll speichert bei jedem Transfer den Namen des Benutzers, der ihn gestartet hat. Das ist ein personenbezogenes Datum. Die Vorschau weist dich unter Bitte beachten darauf hin.
- Wozu: Du siehst in der Übersicht, wer welchen Transfer ausgelöst hat.
- Wie lange: So lange, wie du Transfer-Einträge aufbewahrst. Die Frist stellst du in der Plugin-Konfiguration unter Transfer-Einträge aufbewahren (Tage) ein (höchstens 180 Tage). Rückroll-Pakete haben eine eigene Frist.
- Beim Löschen eines Benutzers: Löschst du einen Benutzer der Administration, entfernt das Plugin seinen Namen automatisch aus allen Transfer-Einträgen.
Das Plugin sendet keine Daten an Dritte. Verbindungen gibt es nur zwischen deinem Live-Shop und deinem Staging-Shop, ausschließlich verschlüsselt über https://.
Fehlerbehebung
Der Menüpunkt „Erlebniswelten-Transfer“ fehlt
Woran es liegt: Das Plugin ist nicht aktiv, dein Benutzer hat nicht das Recht Ansehen oder der Zwischenspeicher (Cache) ist veraltet.
So behebst du es:
- Öffne Erweiterungen → Meine Erweiterungen und prüfe, ob das Plugin aktiviert ist.
- Prüfe die Rechte deiner Rolle (siehe Berechtigungen für dein Team).
- Leere den Cache unter Einstellungen → System → Caches & Indizes.
Der Shop zeigt „System nicht zugeordnet“
Woran es liegt: Keine der eingetragenen Adressen stimmt mit der eigenen Adresse des Shops überein, eine Adresse beginnt nicht mit https://, oder beide Adressen zeigen auf denselben Shop.
So behebst du es: Vergleiche in der Plugin-Konfiguration die Eigene Adresse im Rollen-Hinweis mit den eingetragenen Adressen und korrigiere sie. Datei-Export und -Import funktionieren auch ohne Zuordnung.
Der Staging-Abgleich meldet „Verbindung zum Staging-System fehlt“ oder „Staging-System nicht erreichbar“
Woran es liegt: Die Verbindung ist nicht eingerichtet oder der Live-Shop kommt nicht beim Staging-Shop an. Die Meldung nennt den Grund:
- Zugangsschlüssel abgelehnt: Zugangsschlüssel-ID oder geheimer Schlüssel stimmen nicht. Führe den Einrichtungsassistenten erneut aus.
- Verzeichnisschutz: Der Bereich
/api/des Staging-Shops ist geschützt. Lass ihn vom Schutz ausnehmen. - Keine Antwort innerhalb der Zeit: Erhöhe die Zeitüberschreitung in Sekunden.
- Zertifikat: Die verschlüsselte Verbindung scheitert. Lass das Zertifikat des Staging-Shops prüfen.
- Nicht erreichbar: Prüfe die Adresse des Staging-Shops.
- Keine passende Transfer-Schnittstelle: Installiere in beiden Shops dieselbe Plugin-Version.
So behebst du es: Behebe den genannten Grund und klicke auf Verbindung testen. Bis dahin kannst du jederzeit den Datei-Weg nutzen.
„Elementtyp … ist im Zielsystem nicht installiert“, der Import lässt sich nicht starten
Woran es liegt: Die CMS-Erweiterung, die dieses Element liefert, fehlt im Live-Shop.
So behebst du es: Installiere die Erweiterung dort und übertrage erneut, oder nimm das Layout aus dem Paket. Details stehen in CMS-Erweiterungen auf Staging und Live.
„Gerade läuft ein anderer Transfer“
Woran es liegt: Es kann immer nur ein Transfer gleichzeitig laufen. Auch eine offene Vorschau aus dem Staging-Abgleich sperrt weitere Transfers.
So behebst du es: Warte, bis der laufende Transfer abgeschlossen ist. Über Transfer öffnen im Hinweis Transfer läuft siehst du, welcher es ist. Eine offene Vorschau, die niemand mehr braucht, beendest du mit Verwerfen. Ein Lauf, der länger als eine Stunde keinen Fortschritt macht, wird automatisch abgebrochen.
„Die Vorschau ist abgelaufen“ oder „Das Zielsystem hat sich seit der Vorschau geändert“
Woran es liegt: Eine Vorschau gilt 30 Minuten. Hat sich im Live-Shop inzwischen etwas geändert, ist sie nicht mehr aktuell.
So behebst du es: Lade die Datei erneut hoch bzw. starte die Übernahme im Staging-Abgleich neu.
Die Datei wird beim Hochladen abgewiesen
Woran es liegt: Die Datei ist größer als die Maximale Paketgröße für Uploads (MB) oder kein gültiges Transfer-Paket. Stammt sie aus einer neueren Plugin-Version, meldet das Plugin das ebenfalls.
So behebst du es: Exportiere weniger Layouts auf einmal oder erhöhe die Grenze in der Plugin-Konfiguration. Bring das Plugin in beiden Shops auf denselben Stand.
Der Status im Staging-Abgleich bleibt auf „wird berechnet“
Woran es liegt: Das Plugin berechnet den Status im Hintergrund. Dafür muss auf dem Server ein Hintergrundprozess laufen.
So behebst du es: Bitte deinen Administrator, die Hintergrundverarbeitung zu prüfen (siehe Für Administratoren / Technische Details).
Die Daten wurden übertragen, aber die Seite im Shop zeigt noch den alten Stand
Woran es liegt: Die Layouts sind übernommen, nur das Aktualisieren der SEO-URLs oder des Shop-Caches ist fehlgeschlagen. Der Transfer-Eintrag weist darauf hin.
So behebst du es: Baue Cache und Indizes unter Einstellungen → System → Caches & Indizes neu auf.
Der Einrichtungscode wird nicht angenommen
Woran es liegt: Die Meldung nennt den Grund — der Code ist unvollständig kopiert, verändert, älter als 24 Stunden, stammt aus einer anderen Plugin-Version oder wurde im Live-Shop statt im Staging-Shop eingefügt.
So behebst du es: Erzeuge im Live-Shop mit dem Einrichtungsassistenten einen neuen Code und füge ihn vollständig im Staging-Shop ein.
„Zum Importieren von Paketen brauchen Sie … das Recht „Erlebniswelten importieren und zurückrollen““
Woran es liegt: Deiner Rolle fehlt die Berechtigung Erlebniswelten importieren und zurückrollen.
So behebst du es: Bitte einen Administrator, sie deiner Rolle zuzuweisen (siehe Berechtigungen für dein Team).
FAQ
F: Muss ich das Plugin in beiden Shops installieren?
A: Ja. Der Staging-Shop exportiert und liefert, der Live-Shop übernimmt. Installiere in beiden dieselbe Plugin-Version.
F: Überträgt das Plugin auch Produkte und Kategorien?
A: Nein. Es überträgt Erlebniswelten, Landingpages und auf Wunsch deren Zuweisungen. Fehlt ein Produkt oder eine Kategorie im Live-Shop, zeigt die Vorschau eine Warnung mit der Fundstelle.
F: Was passiert, wenn jemand das Layout inzwischen im Live-Shop geändert hat?
A: Die Vorschau markiert das Layout mit Hier geändert und warnt dich. Übernommen wird erst, wenn du die Warnung bestätigst.
F: Ich habe im Staging-Shop eine CMS-Erweiterung benutzt, die im Live-Shop fehlt. Geht dabei etwas kaputt?
A: Nein. Der Transfer erkennt das in der Vorschau und ändert im Live-Shop nichts, bis die Erweiterung dort installiert ist.
F: Kann ich einen Import rückgängig machen?
A: Ja, solange das Rückroll-Paket noch aufbewahrt wird (standardmäßig 90 Tage). Siehe So rollst du einen Transfer zurück.
F: Was passiert, wenn wir den Staging-Shop neu aus dem Live-Shop kopieren?
A: Die Verbindung bleibt gültig. Mitkopierte Einträge der Transfer-Übersicht kennzeichnet das Plugin als Kopie aus ….
F: Unsere Shops erreichen sich nicht gegenseitig. Kann ich das Plugin trotzdem nutzen?
A: Ja. Nutze den Datei-Weg: Export im Staging-Shop, Datei importieren im Live-Shop. Der Ablauf mit Vorschau und Rückroll-Punkt ist derselbe.
F: Kommen meine Bilder doppelt in die Medienverwaltung?
A: Nein. Ist dieselbe Datei im Live-Shop schon vorhanden, verwendet das Plugin sie wieder.
F: Funktioniert das Plugin mit Shopware SaaS oder Shopware Cloud?
A: Nein. Du brauchst eine selbst betriebene Shopware-Installation.
Für Administratoren / Technische Details
Dieser Abschnitt richtet sich an technische Administratoren. Für die normale Nutzung brauchst du ihn nicht.
Systemanforderungen
- Shopware: 6.7
- PHP: 8.2 oder neuer
- Plugin im Staging- und im Live-Shop installiert, möglichst in derselben Version
- Beide Shops über
https://erreichbar; der Abruf läuft vom Live-Shop zum Staging-Shop, ohne Weiterleitungen
Hintergrundverarbeitung
Import, Paketbau und Abruf aus dem Staging-Shop laufen über die Nachrichten-Warteschlange von Shopware, die Vorberechnung der Prüfsummen für den Staging-Abgleich über die Warteschlange low_priority. Auf beiden Shops muss ein Worker laufen, der async und low_priority abarbeitet:
bin/console messenger:consume async low_priority
Ohne low_priority bleibt der Abgleich bei großen Installationen auf „wird berechnet“. Der Admin-Worker reicht nur, solange die Administration geöffnet ist.
Die Aufräumarbeiten (hängende Läufe, abgelaufene Vorschauen und Uploads, alte Pakete, Rückroll-Pakete und Transfer-Einträge nach Ablauf der Fristen) laufen stündlich als geplante Aufgabe. Dafür muss der Scheduler laufen:
bin/console scheduled-task:run
Mehrere App-Server
Läuft der Live-Shop auf mehreren Servern, setze LOCK_DSN auf einen gemeinsam genutzten Speicher (zum Beispiel Redis oder die Datenbank). Sonst greift die Sperre gegen parallele Transfers nur je Server.
Verzeichnisschutz auf dem Staging-Shop
Ist der Staging-Shop per Basic-Auth geschützt, nimm den Pfad /api/ davon aus. Die Zugangsdaten für den Verzeichnisschutz sendet der Live-Shop nur beim Abruf des Zugangstokens; alle weiteren Aufrufe brauchen den Header Authorization für das OAuth-Token.
Protokoll
Das Plugin schreibt in eine eigene Logdatei: var/log/SwpCmsTransferSix-<Datum>.log (ab Stufe Warnung, täglich rollierend). Die Fehlerreferenz aus dem Transfer-Eintrag findest du dort wieder.
Technische Rechte-IDs
Die Rechte des Plugins heißen intern swp_cms_transfer.viewer (Ansehen), swp_cms_transfer.exporter (Erlebniswelten exportieren) und swp_cms_transfer.importer (Erlebniswelten importieren und zurückrollen). Einrichtungsassistent und Einrichtungscode prüfen diese sieben Rechte:
swp_cms_transfer.importer
system_config:update
integration:create
integration:delete
integration_role:create
acl_role:create
acl_role:delete
Die vom Assistenten angelegte Integration „CMS-Transfer (Staging-Zugriff)“ erhält ausschließlich swp_cms_transfer.exporter. Hinweis: swp_cms_transfer.importer erscheint im Rollen-Editor ohne Schreibrechte auf cms_page; der Import schreibt trotzdem Layouts, Zuweisungen, Standard-Layouts und Landingpages im Live-Shop.
Kommandozeile
bin/console swp:cms-transfer:export <layoutId…> --file=/pfad/paket.zip [--default-category-layout] [--default-product-layout] [--with-assignments] [--with-defaults] [--with-landing-pages]
bin/console swp:cms-transfer:import /pfad/paket.zip [--dry-run] [--with-assignments] [--with-defaults] [--with-landing-pages] [--remove-live-only-translations] [--force-warnings]
bin/console swp:cms-transfer:rollback <transferId> | --last [--force-warnings]
bin/console swp:cms-transfer:list [--limit=50] [--only-changed]
Exit-Codes von Import und Rollback: 0 erfolgreich, 1 Blocker oder Fehler, 2 Warnungen ohne --force-warnings. Die Befehle prüfen keine Rolle (Betreiber-Werkzeug) und nutzen dieselbe Sperre wie die Administration. Transfers über die Kommandozeile erscheinen in der Übersicht mit dem Weg Kommandozeile.
Installation über die Kommandozeile
php bin/console plugin:refresh
php bin/console plugin:install SwpCmsTransferSix --activate
php bin/console cache:clear
Deinstallation
Deinstallierst du das Plugin ohne „Daten behalten“, entfernt es seine Tabellen, seinen Nummernkreis, die angelegte Integration für den Staging-Zugriff und seine Dateien. Übertragene Erlebniswelten und Medien bleiben im Shop.
Anhang für Entwickler: Eigene CMS-Elemente anbinden
Dieser Anhang richtet sich an Entwickler anderer Plugins. Gilt ab Version 6.7.0, Paketformat 1.
Wozu die Schnittstelle da ist
Der Erlebniswelten Transfer überträgt Layouts samt Sektionen, Blöcken, Elementen, Übersetzungen und Medien. Verweise in Element-Konfigurationen findet er pauschal: Jede UUID in einem Wert mit source: static wird eingesammelt und im Zielsystem als Medium, Produkt, Kategorie oder dynamische Produktgruppe zugeordnet. Bild-Adressen in HTML-Texten werden erkannt und umgeschrieben.
Das reicht für die Standard-Elemente von Shopware und für die meisten Plugin-Elemente. Nicht erfasst werden:
- eigene Entitäten eines Plugins (zum Beispiel Vorlagen, Raster-Definitionen, Formulare), die das Zielsystem erst anlegen muss,
- verschachtelte Inhalte, etwa Elemente in einem Grid-Container, deren Konfiguration als eigener Baum gespeichert ist,
- IDs in zusammengesetzten Zeichenketten, etwa
product:<id>|Titeloder serialisierte Werte.
Ohne Anbindung bleiben solche Werte unverändert stehen; unbekannte UUIDs erscheinen in der Vorschau als Hinweis. Mit einem Reference-Provider meldet dein Plugin diese Verweise gezielt, legt eigene Daten ins Paket und schreibt sie im Zielsystem in derselben Transaktion wie die Layouts.
Für kleinere Anpassungen ohne eigenen Provider stehen zwei Events bereit (siehe unten).
Ablauf im Überblick
| Schritt | System | Aufruf | Darf schreiben |
|---|---|---|---|
| Export | Quelle | supports() je Element, collect() je Element und Sprache, danach einmal export() | nein |
| Paket bauen | Quelle | Event CmsTransferPackageBuildEvent | nein |
| Vorschau | Ziel | plan() einmal je Paket, danach Event CmsTransferImportPlanEvent | nein |
| Übernehmen | Ziel | import() einmal je Paket, innerhalb der Import-Transaktion | ja |
Zusätzlich gilt: Vor jedem Import legt das Plugin einen Rückroll-Punkt im Paketformat an. Dafür laufen collect()/export() und das Build-Event auch im Zielsystem über den aktuellen Live-Stand der betroffenen Layouts. Beim Zurückrollen wird dieser Rückroll-Punkt wie ein normales Paket importiert, dein import() also erneut aufgerufen. import() muss deshalb einen vorhandenen Stand überschreiben können (Upsert mit festen IDs), nicht nur anlegen.
Das Interface
Swp\CmsTransferSix\Extension\CmsTransferReferenceProviderInterface
| Methode | Aufgabe |
|---|---|
getName(): string | Fester technischer Name, zugleich Dateiname extensions/<name>.json im Paket. Muster [a-z0-9][a-z0-9_-]{0,63}, empfohlen mit Plugin-Präfix (swp-grid-container). Nach der ersten Veröffentlichung nicht mehr ändern. |
getFormatVersion(): int | Version deines Datenformats, ab 1. Erhöhen, sobald sich die Struktur von export() ändert. |
supports(string $elementType): bool | true für die Elementtypen, um die sich der Provider kümmert. |
collect(array $config, TransferContext $context): ReferenceCollection | Verweise in der Konfiguration eines Elements melden. $context->location nennt die Fundstelle (Layout, Sektion, Block, Element, Sprache). |
export(ReferenceCollection $references, TransferContext $context): array | Eigene Daten für das Paket, gebaut aus allem, was collect() gemeldet hat. Das Ergebnis muss JSON-fähig sein. |
plan(array $data, int $formatVersion, TransferContext $context): PlanContribution | Im Zielsystem prüfen, was fehlt oder abweicht, und als Meldung zurückgeben. Keine Schreibzugriffe. |
import(array $data, int $formatVersion, TransferContext $context): void | Eigene Daten schreiben. Läuft in der Import-Transaktion; eine Exception rollt den gesamten Import zurück. |
Gemeldete Verweise
collect() gibt eine Swp\CmsTransferSix\Reference\ReferenceCollection mit Reference-Objekten zurück:
new Reference($id, 'product', Reference::ORIGIN_PROVIDER, $location, 'teaser');
$id: UUID in Kleinbuchstaben ohne Bindestriche.- Entität:
media,product,categoryoderproduct_stream, wenn bekannt;nulllässt das Plugin die Entität selbst ermitteln. - Gemeldete Medien werden mit ins Paket gepackt und im Ziel angelegt oder wiederverwendet. Fehlende Produkte, Kategorien und Produktgruppen erscheinen in der Vorschau als Warnung mit deiner Fundstelle.
- Für eigene Entitäten setzt du deinen eigenen Entitätsnamen. Das Plugin prüft sie nicht, übernimmt sie aber in
references.jsonund meldet die ID nicht mehr als „unbekannter Verweis“, auch wenn der pauschale Scan sie ebenfalls findet. Die Datensätze selbst überträgst du überexport()/import();ReferenceCollection::getIds('<entität>')liefert dafür die gemeldeten IDs.
TransferContext
context: DAL-Contextdes Aufrufers. Beim Import: Live-Version, System-Scope, gleiche Transaktion wie der Layout-Import. Immer diesen Context verwenden, nie einen eigenen erzeugen.stage:export,planoderimport(isExport(),isPlan(),isImport()).sourceShopId: Shop-ID der Quelle.languageIdsByLocale: beim Export die Sprach-IDs der Quelle, bei Vorschau und Import die Sprach-IDs des Ziels, jeweils nach ISO-Code (de-DE).getLanguageId('de-DE')liefertnull, wenn die Sprache im Ziel fehlt. Ordne Übersetzungen immer über den ISO-Code zu, nie über die Sprach-ID der Quelle.options: gewählte Import-Optionen (nur Vorschau und Import).location: Fundstelle, nur incollect().
Meldungen in der Vorschau
plan() und Listener des Plan-Events geben eine PlanContribution zurück:
return PlanContribution::empty()
->withInfo('swp-grid-container', '2 Rastervorlagen werden wiederverwendet.')
->withWarning('swp-grid-container', 'Rastervorlage „Hero“ weicht im Zielsystem ab und wird überschrieben.', $location)
->withBlocker('swp-grid-container', 'Rastervorlage „Hero“ ist im Zielsystem gesperrt.');
| Methode | Wirkung |
|---|---|
withInfo() | Hinweis, keine Bestätigung nötig |
withWarning() | Warnung; der Import läuft erst, wenn der Nutzer die Warnungen bestätigt (Administration: Häkchen, Kommandozeile: --force-warnings) |
withBlocker() | Import nicht möglich, nicht wegbestätigbar |
withMessage(PlanMessage) | Meldung mit einem Standard-Code des Plugins, z. B. missing-product |
Die Texte werden unverändert angezeigt, mit dem Provider-Namen davor, und auf 500 Zeichen gekürzt. Übersetze sie selbst oder schreibe sie auf Englisch.
Registrierung
Das Interface trägt #[AutoconfigureTag]. Mit autoconfigure: true genügt die Service-Definition; sonst setzt du das Tag swp_cms_transfer.reference_provider selbst:
# src/Resources/config/cms-transfer.yaml
services:
Swp\GridContainerSix\CmsTransfer\GridContainerReferenceProvider:
arguments:
$templateRepository: '@swp_grid_template.repository'
tags:
- { name: swp_cms_transfer.reference_provider }
Optionale Abhängigkeit. Ist der Erlebniswelten Transfer nicht installiert oder nicht aktiv, existiert das Interface nicht, und eine Klasse, die es implementiert, bricht den Container-Aufbau ab. Lade die Datei deshalb nur, wenn das Interface vorhanden ist:
public function build(ContainerBuilder $container): void
{
parent::build($container);
if (interface_exists(CmsTransferReferenceProviderInterface::class)) {
(new YamlFileLoader($container, new FileLocator(__DIR__ . '/Resources/config')))->load('cms-transfer.yaml');
}
}
So bleibt dein Plugin ohne den Transfer voll lauffähig. Ein Name darf nur einmal registriert sein; doppelte oder ungültige Namen und Formatversionen unter 1 brechen den Container-Aufbau mit einer Meldung ab.
Beispiel: Grid-Container mit Vorlagen
Ein Element swp-grid-container speichert eine Vorlagen-ID (eigene Entität swp_grid_template) und je Zelle ein Bild:
{
"template": { "source": "static", "value": "0189…" },
"cells": { "source": "static", "value": "[{\"mediaId\":\"01a2…\"},{\"mediaId\":\"01a3…\"}]" }
}
Die Vorlagen-ID findet der pauschale Scan, kann sie aber keiner bekannten Entität zuordnen (Hinweis „unbekannter Verweis“). Die Bild-IDs stehen in einem JSON-String und bleiben unsichtbar.
final class GridContainerReferenceProvider implements CmsTransferReferenceProviderInterface
{
private const NAME = 'swp-grid-container';
/**
* @param EntityRepository<GridTemplateCollection> $templateRepository
*/
public function __construct(private readonly EntityRepository $templateRepository)
{
}
public function getName(): string
{
return self::NAME;
}
public function getFormatVersion(): int
{
return 2;
}
public function supports(string $elementType): bool
{
return $elementType === 'swp-grid-container';
}
public function collect(array $config, TransferContext $context): ReferenceCollection
{
$references = new ReferenceCollection();
$location = $context->location ?? new Location();
$cells = json_decode((string) ($config['cells']['value'] ?? '[]'), true);
foreach (\is_array($cells) ? $cells : [] as $index => $cell) {
if (\is_array($cell) && \is_string($cell['mediaId'] ?? null) && Uuid::isValid($cell['mediaId'])) {
$references->add(new Reference($cell['mediaId'], 'media', Reference::ORIGIN_PROVIDER, $location->withPath('cells.' . $index), 'mediaId'));
}
}
$templateId = $config['template']['value'] ?? null;
if (\is_string($templateId) && Uuid::isValid($templateId)) {
$references->add(new Reference($templateId, self::NAME, Reference::ORIGIN_PROVIDER, $location->withPath('template'), 'template'));
}
return $references;
}
public function export(ReferenceCollection $references, TransferContext $context): array
{
$templateIds = $references->getIds(self::NAME);
if ($templateIds === []) {
return ['templates' => []];
}
$templates = $this->templateRepository->search(new Criteria($templateIds), $context->context)->getEntities();
return ['templates' => array_values($templates->map(static fn (GridTemplateEntity $template): array => [
'id' => $template->getId(),
'name' => $template->getName(),
'columns' => $template->getColumns(),
]))];
}
public function plan(array $data, int $formatVersion, TransferContext $context): PlanContribution
{
$templates = self::templates($data, $formatVersion);
$existing = $templates === [] ? [] : $this->templateRepository->searchIds(new Criteria(array_column($templates, 'id')), $context->context)->getIds();
return PlanContribution::empty()->withInfo(self::NAME, \sprintf(
'%d Rastervorlage(n) neu, %d werden aktualisiert.',
\count($templates) - \count($existing),
\count($existing),
));
}
public function import(array $data, int $formatVersion, TransferContext $context): void
{
$templates = self::templates($data, $formatVersion);
if ($templates !== []) {
$this->templateRepository->upsert($templates, $context->context);
}
}
/**
* Format 1 had no "columns"; migrated to the current shape.
*
* @return list<array{id: string, name: string, columns: int}>
*/
private static function templates(array $data, int $formatVersion): array
{
$templates = [];
foreach (\is_array($data['templates'] ?? null) ? $data['templates'] : [] as $template) {
$templates[] = [
'id' => (string) $template['id'],
'name' => (string) $template['name'],
'columns' => $formatVersion === 1 ? 12 : (int) $template['columns'],
];
}
return $templates;
}
}
Hinweise zum Beispiel:
export()lädt alle Vorlagen mit einer Abfrage übernew Criteria($ids),import()schreibt mit einemupsert()— keine Repository-Aufrufe in Schleifen.- Die Vorlage behält ihre ID. Dadurch bleibt die Vorlagen-ID in der Element-Konfiguration im Ziel gültig, ohne dass sie umgeschrieben werden muss.
- Der Provider verwendet ausschließlich
$context->context.
Events für leichte Anpassungen
| Event | Zeitpunkt | Möglichkeiten |
|---|---|---|
Swp\CmsTransferSix\Extension\Event\CmsTransferPackageBuildEvent | Quelle (und Rückroll-Punkt im Ziel), nachdem alle Provider exportiert haben, bevor das Paket geschrieben wird | getPageIds(), getDocument('pages.json') (nur lesend), getExtensions(), addExtensionData($name, $formatVersion, $data) |
Swp\CmsTransferSix\Extension\Event\CmsTransferImportPlanEvent | Ziel, nachdem Vorschau und Provider-plan() fertig sind | getPlan(), getContents() (Paketinhalt inkl. extensions), contribute(PlanContribution) |
#[AsEventListener]
public function __invoke(CmsTransferImportPlanEvent $event): void
{
if ($event->getPlan()->countByAction(PlanAction::Create) > 20) {
$event->contribute(PlanContribution::empty()->withWarning('swp-shop-policy', 'Mehr als 20 neue Layouts in einem Transfer.'));
}
}
Daten, die ein Listener per addExtensionData() beisteuert, landen wie Provider-Daten in extensions/<name>.json. Ein gleichnamiger Eintrag ersetzt die Daten des Providers. Importiert werden sie im Ziel nur, wenn dort ein Provider mit diesem Namen registriert ist; sonst erscheint die Warnung provider-missing. Beide Events dürfen nichts schreiben.
Formatversionen
Jeder Provider versioniert sein Datenformat unabhängig vom Paketformat. Die Version steht im Manifest (providers) und in extensions/<name>.json; das Plugin prüft beim Einlesen, dass beide übereinstimmen.
| Version im Paket | Verhalten im Ziel |
|---|---|
| gleich der installierten | plan()/import() mit dieser Version |
| älter als die installierte | plan()/import() bekommen die ältere Version im Parameter $formatVersion. Der Provider muss alle älteren Versionen lesen und auf das aktuelle Format umsetzen. |
| neuer als die installierte | Die Daten werden nicht an den Provider übergeben. Warnung provider-format-too-new („Erweiterung … liefert Datenformat 3, das Zielsystem unterstützt bis 2“). Der übrige Import läuft nach Bestätigung durch. Abhilfe: Erweiterung im Ziel aktualisieren und erneut übertragen. |
Erhöhe die Formatversion bei jeder Änderung, die ein älterer Provider nicht lesen könnte. Entferne ältere Versionen nicht, solange Pakete oder Rückroll-Punkte damit existieren können.
Wenn der Provider im Ziel fehlt
Enthält ein Paket extensions/<name>.json, aber im Zielsystem ist kein Provider mit diesem Namen registriert (Plugin fehlt oder ist deaktiviert):
- Die Vorschau zeigt die Warnung
provider-missing: „Erweiterung „“ fehlt im Zielsystem; ihre Daten werden nicht übernommen.“ - Der Import läuft nach Bestätigung der Warnungen vollständig durch: Layouts, Medien, Zuweisungen und die Daten aller vorhandenen Provider werden übernommen.
- Die Daten des fehlenden Providers werden verworfen. Element-Konfigurationen bleiben unverändert stehen; Verweise darin zeigen auf Datensätze, die es im Ziel womöglich nicht gibt.
- Fehlt zusätzlich der Elementtyp selbst (kein Daten-Resolver und kein Storefront-Template im Ziel), blockiert die Vorschau mit
unknown-element-type.
Abhilfe: Erweiterung im Ziel installieren und aktivieren, dann erneut übertragen.
Fehlerverhalten
- Eine Exception in
collect()/export()bricht den Export ab. - Eine Exception in
plan()bricht die Vorschau ab; der Transfer-Eintrag steht danach auf „fehlgeschlagen“ in der Phase „Vorschau“. - Eine Exception in
import()rollt den gesamten Import zurück, auch bereits geschriebene Layouts; neu abgelegte Mediendateien werden entfernt. Der Transfer-Eintrag nennt die Phase und eine Fehlerreferenz. - Fange Exceptions nicht pauschal ab. Ein nicht übertragbarer Datensatz gehört als Warnung oder Blocker in
plan().
Testen
Empfohlene Fälle für einen Integrationstest deines Providers:
- Layout mit deinem Element exportieren →
extensions/<name>.jsonenthält deine Daten,manifest.jsonunterprovidersdeine Formatversion. - Layout im Ziel löschen, Paket importieren →
import()hat deine Daten geschrieben, der Transfer endet erfolgreich. - Paket mit Daten einer älteren Formatversion (per
CmsTransferPackageBuildEventerzeugen) →import()setzt sie korrekt um. - Exception in
import()→ Layout und deine Daten bleiben unverändert. - Rückroll-Punkt: nach dem Import zurückrollen → dein vorheriger Stand ist wiederhergestellt.
Diese Anleitung wurde für Erlebniswelten Transfer: Staging zu Live mit Vorschau und Rollback, Version 6.7.0, erstellt.
Weitere Handbücher
Admin Passwort Erinnerung
Admin Passwort Erinnerung: Deine Backend-Benutzer erneuern ihre Passwörter rechtzeitig, mit Hinweis nach dem Login und täglicher E-Mail. Premium sperrt abgelaufene Zugänge.
Handbuch öffnen Shopware 6Adressprüfung: Hausnummer-Check & Korrekturvorschläge
Adressprüfung bei der Eingabe: Das Plugin erkennt fehlende Hausnummern, schlägt auf Wunsch über Google Korrekturen vor und sorgt für weniger Pakete, die unzustellbar zurückkommen.
Handbuch öffnen Shopware 6Adventskalender | Türchen mit Produkten, Gutscheinen und Aktionen
Adventskalender für deine Erlebniswelten: Die Türchen öffnen pünktlich ohne Cache leeren, verraten vorab nichts im Quelltext und zeigen Gutscheine, Produkte oder eigene Inhalte.
Handbuch öffnenWer betreut deinen Shop, wenn es ernst wird?
Wir pflegen Shopware-Shops seit über 20 Jahren, inklusive Updates, Hotfixes und der Plugins, die du hier gerade einrichtest.