Sie lernen in diesem Beitrag, wie Sie Flux Elemente (fast) automatisch zu Mask Elementen migrieren können.

Wichtiger Hinweis

Diese Anleitung ermöglicht nicht die Migration von Flux-Gridelementen. Sie ist lediglich für Flux-Elemente konzipiert, die innerhalb von Mask repliziert werden können. Des Weiteren ist zu beachten, dass Inline-Contentelemente mit dieser Anleitung nicht migriert werden können; jedoch ist die Migration von Elementen mit Dokumenten und Bildern (FAL) möglich.

1. Flux Elemente in Mask nachbauen

Um sicherzustellen, dass die Flux-Elemente später sowohl funktionell als auch optisch identisch sind, müssen die entsprechenden Mask-Elemente als äquivalente Darstellungen erstellt werden, wobei die zugehörigen Felder korrekt zugeordnet werden müssen. Die Benennung der Felder muss nicht exakt übereinstimmen, es wird jedoch dringend empfohlen, passende Namen zu wählen, um Verwechslungen zu vermeiden.

Sobald alle Mask-Elemente entsprechend den ursprünglichen Flux-Elementen eingerichtet sind, kann der Migrationsprozess beginnen. Für diesen Zweck habe ich ein einfaches PHP-Skript erstellt. Obwohl es grundlegend gehalten ist, erfüllt es seinen Zweck effektiv: Es überträgt Informationen aus dem "Flexform"-Feld in der Datenbank in die Mask-Elemente (unter Beibehaltung der Werte) und passt gegebenenfalls Dateiverlinkungen auf das neue Mask-Element an.

2. PHP Script anpassen und Flux-Element raussuchen

Laden Sie die "FluxMigrator" PHP-Datei von GitHub herunter. Nachdem Sie die Datei heruntergeladen haben, öffnen Sie sie und passen Sie die Datenbankeinstellungen, die unterhalb der Lizenzbestimmungen angegeben sind, an Ihre spezifischen Bedürfnisse an. Nachdem Sie die notwendigen Änderungen vorgenommen haben, benennen Sie die Datei um, zum Beispiel in "fluxmigrator491824.php", und laden Sie sie ins Root-Verzeichnis Ihrer Website hoch.

Um den Migrationsprozess zu starten, geben Sie im Webbrowser die Adresse Ihrer Website gefolgt von /fluxmigrator491824.php ein. Sie sollten dann auf ein einfaches HTML-Formular weitergeleitet werden. In dieses Feld tragen Sie den Namen des alten Flux-Feldes aus der Datenbank ein, welches Sie migrieren möchten. Wenn es das Element in der Datenbank gibt, sollten beim Klick auf "Check" die Flexform-Felder, die auch im Konfigurationsbereich der HTML Datei sind, angezeigt werden.

3. Flux Felder auf Mask Felder einstellen

Falls das Flux-Element in der Datenbank vorhanden ist, haben Sie nun die Möglichkeit, die jeweiligen Flexform-Felder den Mask-Datenbankfeldern zuzuordnen. Suchen Sie in der Datenbank nach den entsprechenden Namen, beispielsweise "tx_mask_specialfieldname". Im Feld "Mask Element CType" geben Sie den Namen ein, der im CType-Feld des Mask-Elements zu finden ist. Sollten Sie noch kein solches Element angelegt haben, wäre es ratsam, vorab eines zu erstellen, um einen Referenzdatensatz in der Datenbank zu haben.

Wenn Sie auf "Generate Query" klicken, werden MySQL-Befehle generiert. Die erste Liste dieser Befehle kümmert sich um die Migration aller Content-Elemente vom alten Flux-CType zu Mask. Eine separate Liste von MySQL-Befehlen wird erstellt, die speziell für die Migration von "sys_file_reference" zuständig ist.

Wichtig: Wenn Sie auf "Generate Query" klicken, wird keine direkte Modifikation in der Datenbank vorgenommen. Es werden ausschließlich die erforderlichen SQL-Befehle generiert.

4. Datenbankbefehle ausführen

Bevor Sie mit der Ausführung der MySQL-Befehle beginnen, ist es unerlässlich, ein Backup Ihrer aktuellen Datenbank anzulegen. Um ein Höchstmaß an Sicherheit während der Migration zu gewährleisten, sollten Sie zuerst lediglich den ersten tt_content und sys_file_reference Befehl ausführen. Anschließend prüfen Sie im Backend, ob die zugehörigen Felder im Mask-Element die korrekten Werte erhalten haben. Sobald Sie sicherstellen können, dass alles korrekt funktioniert, können Sie alle restlichen Befehle in einem Durchgang ausführen.

Auf diese Weise erfolgt die Migration nahezu automatisch und erleichtert den Übergang von Flux zu einem neuen Mask-Element, das hoffentlich kontinuierlich weiterentwickelt wird. Sollte die Zeit reichen, überlege ich auch eine Extension daraus zu machen und die MySQL-Befehle automatisch durchzuführen.

Previous PostTYPO3 Extbase Tutorial: Einem FE-Plugin neue Felder geben und im Frontend verarbeiten
Next PostTYPO3 Tutorial: Flux Page Layouts zu normalen Page Layouts migrieren