Skip to content

CMS Import/Export Plugin

Zum Plugin

Das DmfCmsImportExport Plugin ermöglicht den Export und Import von CMS-Seiten (Erlebniswelten) und Theme-Konfigurationen. Ideal für die Übertragung von Inhalten zwischen Entwicklungs-, Staging- und Produktivumgebungen.

Inhalt dieser Seite:


Voraussetzungen

  • Shopware 6.7.0 oder höher
  • PHP 8.2 oder höher
  • PHP-Extensions: zlib, curl

Installation

bash
composer require dmf/sw6-plugin-cmsimportexport
bin/console plugin:install --activate DmfCmsImportExport
bin/console cache:clear

Features

  • CMS-Seiten exportieren/importieren: Komplette Erlebniswelten mit allen Blöcken und Elementen
  • Theme-Konfigurationen exportieren/importieren: Alle Theme-Einstellungen eines Verkaufskanals
  • Medien-Handling: Verknüpfte Medien werden automatisch mitexportiert
  • Admin-Integration: Export/Import direkt im Backend
  • CLI-Unterstützung: Automatisierung via Console Commands
  • CI/CD-Ready: Perfekt für automatisierte Deployments

Console Commands

CMS-Seite exportieren

bash
bin/console dmf:cms:export --id=<cms-page-id> [--file=<filename>]
OptionErforderlichBeschreibung
--idJaUUID der CMS-Seite
--fileNeinDateiname (Standard: export)

Beispiel:

bash
# Export mit automatischem Dateinamen
bin/console dmf:cms:export --id=a1b2c3d4e5f6789012345678

# Export mit benutzerdefiniertem Dateinamen
bin/console dmf:cms:export --id=a1b2c3d4e5f6789012345678 --file=homepage-backup

CMS-Seite importieren

bash
bin/console dmf:cms:import --file=<filepath>
OptionErforderlichBeschreibung
--fileJaPfad zur Export-Datei

Beispiel:

bash
bin/console dmf:cms:import --file=var/export/homepage-backup.gz

INFO

Beim Import werden neue UUIDs generiert, sodass keine Konflikte mit bestehenden Seiten entstehen.

Theme-Konfiguration exportieren

bash
bin/console dmf:theme:export --id=<theme-id> [--file=<filename>]
OptionErforderlichBeschreibung
--idJaUUID des Themes
--fileNeinDateiname (Standard: export)

Beispiel:

bash
bin/console dmf:theme:export --id=b2c3d4e5f6a789012345678 --file=theme-config

Theme-Konfiguration importieren

bash
bin/console dmf:theme:import --id=<theme-id> --file=<filepath>
OptionErforderlichBeschreibung
--idJaUUID des Ziel-Themes
--fileJaPfad zur Export-Datei

Beispiel:

bash
bin/console dmf:theme:import --id=c3d4e5f6a7b89012345678 --file=var/export/theme-config.gz

Admin-Integration

Das Plugin fügt Export/Import-Buttons in der Shopware Administration hinzu.

CMS-Seite exportieren (Admin)

  1. Öffne InhalteErlebniswelten
  2. Wähle die gewünschte Seite
  3. Klicke auf Exportieren in der Toolbar
  4. Die Datei wird automatisch heruntergeladen

CMS-Seite importieren (Admin)

  1. Öffne InhalteErlebniswelten
  2. Klicke auf Importieren
  3. Wähle die Export-Datei aus
  4. Die Seite wird als neue Erlebniswelt angelegt

CI/CD-Integration

GitLab CI Beispiel

yaml
deploy:staging:
  stage: deploy
  script:
    # CMS-Seiten von Produktion exportieren
    - bin/console dmf:cms:export --id=$HOMEPAGE_ID --file=homepage

    # Theme-Konfiguration exportieren
    - bin/console dmf:theme:export --id=$THEME_ID --file=theme-config

    # Dateien als Artifacts speichern
  artifacts:
    paths:
      - var/export/

Deployment-Workflow

bash
# 1. Auf Quell-System: Export
bin/console dmf:cms:export --id=abc123 --file=homepage
bin/console dmf:theme:export --id=def456 --file=theme

# 2. Dateien übertragen (SCP, rsync, etc.)
scp var/export/*.gz user@target:/var/www/shop/var/import/

# 3. Auf Ziel-System: Import
bin/console dmf:cms:import --file=var/import/homepage.gz
bin/console dmf:theme:import --id=xyz789 --file=var/import/theme.gz
bin/console cache:clear

Technische Details

Export-Format

Exporte werden als komprimierte gzip-Dateien (.gz) gespeichert:

  • CMS-Seiten: JSON mit allen Blöcken, Slots, Konfigurationen und base64-kodierten Medien
  • Theme-Konfigurationen: JSON mit allen Theme-Einstellungen

Medien-Behandlung

  • Export: Verknüpfte Medien werden base64-kodiert in die Export-Datei eingebettet
  • Import: Medien werden automatisch in die Mediathek hochgeladen und korrekt verknüpft

UUID-Handling

Beim Import werden alle UUIDs neu generiert, um Konflikte zu vermeiden. Die Beziehungen zwischen Objekten (Blöcke, Slots, Medien) bleiben dabei erhalten.


Troubleshooting

Export schlägt fehl

  1. Prüfe, ob die CMS-Seite/das Theme existiert
  2. Stelle sicher, dass Schreibrechte für var/export/ vorhanden sind
  3. Prüfe den verfügbaren Speicherplatz

Import schlägt fehl

  1. Prüfe das Dateiformat (muss .gz sein)
  2. Stelle sicher, dass die Datei nicht beschädigt ist
  3. Prüfe die PHP-Extensions: zlib, curl

Medien fehlen nach Import

  1. Führe bin/console media:generate-thumbnails aus
  2. Prüfe die Mediathek auf fehlgeschlagene Uploads
  3. Leere den Cache: bin/console cache:clear