Hilf mir, TYPO3 Upgrade Wizard! Gridelements-Datensätze sauber migrieren.

Der vierte und letzte Teil dieser Blogreihe: Unsere neuen Container und Inhaltselemente sind konfiguriert und einsatzbereit. Aber im Projekt existieren immer noch die alten Datensätze, die mit Gridelements und deren Kindelementen erstellt wurden.

Daher zeigen wir euch diesmal, wie ihr bestehende Daten migrieren könnt.


Weitere Teile:


Mögliche Wege der Migration

In unserem konkreten Projekt haben wir Daten auf drei Arten migriert:

1. Mittels einfachem SQL-Skript

Wenn es nur um kleine Anpassungen in der Datenbank ging, haben wir diese über SQL-Skripte durchgeführt. Beispielsweise hatten wir im Zuge des Upgrades Backend-Layouts umbenannt; deren Identifier mussten dann in den Seiteneigenschaften aktualisiert werden.

Auf ähnliche Weise haben wir auch einige Layouts und Frames durch neue Lösungen ersetzt.

2. Manuelles Anlegen der neuen Datensätze

Klar, Automatisierung ist immer zu bevorzugen. Aber seien wir ehrlich: bei einer geringen Menge von Datensätzen geht das schneller, als ein Update-Skript zu schreiben. Dieses Vorgehen ist allerdings auch nicht in jedem Projekt möglich.

3. Mithilfe eigener TYPO3 Upgrade Wizards

Upgrade Wizards kennt ihr aus dem TYPO3 Install Tool. Bei einem Wechsel von TYPO3 v9 auf v10 müsst ihr zum Beispiel die Datensätze aus der veralteten Tabelle “pages_language_overlay” in die Tabelle “pages” migrieren.

TYPO3 stellt ein Interface bereit, mit dem Entwickler eigene Upgrade Wizards ergänzen können.

Ein Upgrade Wizard eignet sich für komplexe Migrationen:

  • Anlegen neuer Datensätze in einer beliebigen Tabelle
  • Änderung des CTypes
  • Kopieren alter Daten in neue Tabellen(-felder)
  • Aktualisierung von FAL-Relationen
  • Anpassung von Feldwerten
  • Löschen der alten Datensätze
  • Beschränkung der Migration auf bestimmte CTypes, Eltern-Gridelemente, …

Unser vollständiges Beispiel weiter unten wird das sehr anschaulich zeigen.

Aufbau eines TYPO3 Upgrade Wizard

Ein gut verständliches Tutorial zur Erstellung eigener Upgrade Wizards findet ihr in der offiziellen TYPO3-Dokumentation.

Daher führen wir hier nur ein paar Eckdaten auf:

  • Eigene Upgrade Wizards können im Sitepackage oder anderen Extensions ergänzt werden.
  • Vor Ausführung des Upgrades lässt sich prüfen, ob eine Migration notwendig ist.
  • Die Reihenfolge auszuführender Upgrade Wizards lässt sich bei Bedarf festlegen.

Es kann auch weiterhelfen, sich andere Upgrade Wizards aus dem TYPO3 Core oder aus Extensions näher anzusehen.

Beispiel: Migration von Gridelements zum Tab-Element des Bootstrap Package

Den folgenden, mustergültigen Upgrade Wizard hat meine Kollegin Mirena Peneva geschrieben.

Die Ausgangslage im Projekt:

  • Ein einspaltiges Gridelement “Tab-Container”
  • Jedes dieser Gridelemente kann mehrere Inhaltselemente vom Typ “Text & Images” (CType “textpic”) beinhalten
  • Einige Inhaltselemente beinhalten Bilder (FAL-Relationen)
  • Im Frontend werden die so gruppierten Inhalte als Reiter (“Tabs”) ausgegeben

Unser Ziel:

  • Verwendung des Tab-Elements (mit Inline-Elementen) aus dem Bootstrap Package
Tab-Element
Eine Gruppe von Tabs (Reitern), zwischen denen der Nutzer durch Klick blättern kann (Screenshot von www.bootstrap-package.com)

Aufgaben:

  • Alle betroffenen Elemente auswählen und deren CType entsprechend ändern
  • Neue Inline-Elemente für die bisherigen Gridelements-Kindelemente erstellen und bestehende Inhalte dahin migrieren
  • Falls vorhanden, FAL-Relationen in der Tabelle “sys_file_reference” mit dem neuen Inline-Element verknüpfen
  • Alte Datensätze löschen

ext_localconf.php:

Classes/Updates/MigrateTabs.php:

Dieser Upgrade Wizard ist eine praktische Blaupause, die ihr an euer Projekt anpassen könnt. Etwas Erfahrung mit dem TYPO3 QueryBuilder ist von Vorteil; es bietet sich aber auch eine gute Gelegenheit zur Einarbeitung.

Wir wünschen euch viel Erfolg beim Ausprobieren! Habt ihr noch Fragen zum Thema?

Bildquellen

  • Tab-Element: www.bootstrap-package.com
  • Beitragsbild „Migration“: Sebastian Klein, MFC

Über Sebastian Klein

Steht irgendwo zwischen Front- und Backend. Mit einem Faible für Usability und Dokumentation. Immer auf der Suche nach Good Practices.

Homepage: https://www.sebkln.de/

      Profile:
    • twitter

Ein Gedanke zu „Hilf mir, TYPO3 Upgrade Wizard! Gridelements-Datensätze sauber migrieren.“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.