Import / Migration von K2-Artikeln mit Videos, Galerien und Downloads aus Joomla 3 in Joomla 4

english

Dieser Beitrag beschreibt eine Vorgehensweise, wie man auch umfangreichere Joomla3-Websites, die mit dem Artikelsystem K2 laufen, in ein Joomla4-System importiert. Der grundsätzliche Umgang mit Joomla, Erweiterungen, Felder und Overrides, Datenbanken, PhpMyAdmin und PHP wird vorausgesetzt und hier nicht beschrieben.

Bitte beachten:

Die Migration unbedingt in einer Testumgebung durchführen!

Diese Anleitung beschreibt eine Vorgehensweise, die bei mir auf vielen Seiten gut funtioniert hat. Dies ist aber keine Garantie, dass es bei jedem anderen funktioniert. Die Umsetzung erfolgt daher auf eigene Gefahr und ohne Garantie, Gewährleistung und Support.

Zwischendurch immer wieder sichern!
Zum Sichern der Daten und Rücksichern habe ich gute Erfahrungen mit Akeeba Backup gemacht.

Die einzelnen Migrationsschritte hängen davon ab, wie viele Artikel in K2 vorhanden sind und ob die Tabs Bildergalerie, Video, Anhang und Extrafelder genutzt wurden.

Migrations-Schritte:

  1. Vorbereitung: Artikelliste J3/K2 exportieren
    Ich nutze hierfür ein Modul-Override (mod_custom) im Admin-Bereich auf dem Dashboard, welches im dort eine tabellarische Übersicht aller Artikel mitsamt Kategorien, Bildergalerien, Video, Downloads und  Extra-Felder ausgibt.
    Diese Tabelle kopiere ich in eine Exceltabelle.
    Download mod_custom articlelistk2.php
    Zipfile entpacken und nach /administrator/templates/yourAdminTemplate/html/mod_custom kopieren
    Vor dem Export und der Migration macht es Sinn, alle deaktivierten und im Papierkorb befindlichen Artikel zu löschen!
  2. Artikel aus K2 in J3-Beiträge importieren, inkl. Extrafelder
    Hierfür nutze ich die Erweiterung  k2-to-com-content-migration von Joomlart
  3. Order /media/k2 bei Bedarf sichern. Dies ist wichtig, da dieser Ordner bei der Deinstallation von K2 gelöscht wird.
    1. Video-Ordner sichern
      Befindet sich Inhalt im Ordner /media/k2/videos, erstmal offline sichern.
    2. Galerie-Ordner sichern
      Bildergalerien, die in K2 eingegeben worden sind, liegen nun im Ordner /images/joomlart in Unterverzeichnissen mit der entsprechenden ID des K2-Artikels. Es werden aber ggf. nicht alle Bilder übernommen.
      Also schiebe ich die Originalverzeichnisse aus /media/k2/galleries in einen anderen Ordner, z.B. /images/galleries
    3. Anhang-Ordner sichern
      Den Ordner /media/k2/attachments erstmal offline sichern.
  4. Menüpunkte von K2 auf Joomla-Beiträge ändern
    Ich erstelle hier noch keine Template-Overrides, da diese ggf. unter Joomla 4 nochmals angepasst werden müssen.
  5. Installierte Erweiterungen mit dem Button Joomla-Update auf J4-Tauglichkeit prüfen
    1. Backup durchführen
    2. Alle nicht-Joomla4-fähigen Erweiterungen deinstallieren
  6. Upgrade durchführen
    1. Backup durchführen
    2. Upgrade durchführen
  7. Joomla 4 - Installation prüfen, ggf. Komponenten installieren (Sprache, Akeeba)
  8.  Template prüfen, ggf. umschalten auf Cassiopeia

Bei Websites ohne gefüllte K2-Tabs Bildergalerie, Video und Anhang wäre die Migration nun fertig und es können Template-Anpassungen / Overrides vorgenommen werden. Ansonsten geht die Migration wie folgt weiter:

  1. Für die gewünschten Felder müssen nun die passenden Erweiterungen vorhanden sein:
    1. Video: Die Erweiterung AllVideo-Plugin installieren, falls nicht (mehr) vorhanden.
    2. Bildergalerien: Für den Import der alten Bildergalerien aus K2 nutzte ich entweder das Plugin Simple Image Gallery Free vo Joomla Works oder Simple Image Gallery Extended Pro von Kubik Rubik.
      Beide nutzen den gleichen Tag, allerdings gibt es bei SIGE mehr Einstellungsmöglichkeiten.
      Für neue Galerien nutze ich die Erweiterung Advanced Custom Fields von Tassos Marinos. Diese finde ich wesentlich komfortabler in der Handhabung (Einstellungsmöglichkeiten, manuelle Sortierung der Bilder etc.)
    3. Anhänge / Downloads: Auch hierfür ist die Erweiterung Advanced Custom Fields das passende Tool.
  2.  Felder anlegen:
    1. Video -> Textbereich
    2. Bildergalerie:
      Importierte Bildergalerie -> Textbereich
      Neue Bildergalerie -> ACF Gallerie
    3. Anhänge / Downloads -> ACF Dateiupload

Je nach Umfang der zu importierenden Felder kann man nun die Felder in den einzelnen Beiträgen manuell mit den Daten aus der Exceltabelle (Punkt 1) übernehmen.

  • Die Tags für Video und Galerie aus der Tabelle werden in die entsprechenden Felder im Beitrag kopiert. Bitte darauf achten, dass die Pfade stimmen: Aus {gallery}75{/gallery} kann dann {gallery}pfadzurgalerie/75{/gallery} werden.
  • Die Downloads werden in das entsprechende Feld im Beitrag hochgeladen.

Meiner Erfahrung nach kann man diese manuelle Methode bei bis zu 50 Artikel anwenden. Bei mehr Artikeln, die manuell bearbeitet werden müssen, bietet sich ein Import der Felder über ein SQL-Script an. PhpMyAdmin-Zugriff ist hier von Vorteil.

  1. Vorbereitungen:
    1. Videos in den entsprechenden Order schieben (siehe Einstellung AllVideoPlugin)
    2. Bildergalerie: Prüfen, ob die Galerien in den Ordnern entsprechend der Tags liegen
    3. Anhänge / Downloads: In den Ordner /media/acfupload verschieben.
  2. CSV-Importlisten erstellen:
    Da bei Import die IDs der Artikel neu vergeben werden, muss nun eine Tabelle generiert werden, in der die neuen Beitrag-IDs mit den dazugehörigen Videos, Galerien und Downloads stehen. Dieses habe ich mit einer Excel-Tabelle der importierten Beiträge und der Excel-Funktion SVERWEIS gelöst. Ziel ist es, am Ende 3 CSV-Tabellen mit folgenden Spalten zu haben. Die Spalten habe ich mit | getrennt, da in den Download-Dateinamen tatsächlich hin und wieder ein Seminkolon benutzt wurde.
    1. Video: Spalte 1 -> Feld-ID, Spalte 2 -> Item-ID neu, Spalte 3 -> Video-Tag (Beispiel: {mp4}pfadzumvideo/xx{/mp4})
    2. Bildergalerie: Spalte 1 -> Feld-ID, Spalte 2 -> Item-ID neu, Spalte 3 -> Galerie-Tag (Beispiel: {gallery}pfadzurgalerie/75{/gallery})
    3. Anhänge / Downloads: Spalte 1 -> Item-ID neu, Spalte 2 -> Dateiname (Beispiel: xxx.pdf)
      Hier ist wichtig, dass bei bei mehreren Downloads pro Beitrag alle Dateien einzeln aufgelistet werden
  3. Import per CSV / Script
    Ich habe mir auf meinem Server ein kleines Script geschrieben, welches die jeweilige CSV-Datei ausliest und ein SQL-String ausgibt. Diesen kopiere ich dann über PhpMyAdmin in die Tabelle _fields_values der Joomla-Datenbank. Bitte die entsprechende Tabelle vorher unbedingt sichern!
    Die Scripte können als zipfile hier heruntergeladen werden.
    1. Import Video und Bildergalerien:
      Die CSV-Dateien können über PhpMyAdmin in die Tabelle  _fields_values importiert werden.
      Alternativ kann auch das Script genutzt werden, um ein SQL-String zu generieren
      script gallery video
    2. Script für Anhänge / Downloads
      script download

Nun müssten alle Videos, Bildergalerien und Downloads in den neuen Beiträgen zu sehen sein. Die Ausgaben können mit Felder-Einstellungen und Template-Overrides gesteuert werden.


Wenn dir der Artikel gefällt, darfst du ihn gerne teilen:

zurück