- Werbung -

Die Entscheidung für ein bestimmtes Content Management System (CMS) sollte stets gut überlegt sein, denn ein späterer Wechsel ist häufig nicht unaufwändig. Der folgende Artikel beschreibt die Migration einer Webseite, die noch auf Joomla 1.0.x basierte, zu Drupal 7 und beschreibt die Klippen, die dabei zu umschiffen waren.

Vorgeschichte

Als im Jahr 2006 die Entscheidung getroffen wurde, eine kleine Firmenwebseite mit Joomla zu realisieren, waren die Gründe die vergleichsweise schnelle Realisierbarkeit und die einfache Bedienbarkeit beim Erstellen neuer Artikel. Tatsächlich erfüllte Joomla die Anforderungen zur allgemeinen Zufriedenheit und nach kurzer Einarbeitungszeit konnten alle Mitarbeiter ihre Texte einstellen und pflegen. Im Laufe der Zeit wuchs die Seite und neue Funktionen kamen hinzu: so z.B. unterschiedliche Newsletter für verschiedene Zielgruppen, eine Bildergalerie, ein Downloadbereich für Formulare und Dokumente und ein interner Bereich für Kunden mit Diskussionsmöglichkeit in Form eines Forums. Leider waren diese zusätzlichen Module nicht immer so richtig einfach zu bedienen oder ausreichend zuverlässig. Vor allem das Newsletter-Modul mkpostman bereitete Schwierigkeiten und wurde zuletzt auch nicht mehr vom Programmierer gepflegt. Das Modul für den Dokumenten-Download DocMan sollte ebenfalls verbessert werden. Und bei der Diskussion über die Neugestaltung der Seitenstruktur stellte sich heraus, dass die starre Struktur mit Sektionen und Kategorien, wie sie in Joomla 1.0.x noch zwingend existierte, eher hinderlich war.

Die Entscheidung

Nach einigen Überlegungen und Diskussionen fiel dann die Entscheidung, eine Migration zu Drupal zu prüfen. Nach Möglichkeit gleich auf die aktuelle Version 7. Für den internen Bereich war dies sehr leicht, weil dieser bisher so gut wie nicht genutzt worden war und nur wenig Content enthielt. Er wurde daher komplett neu aufgesetzt und mit Hilfe von Drupals Modul OrganicGroups anwenderfreundlicher gestaltet – was zu einer deutlichen Steigerung der Akzeptanz führte. Schwieriger war dagegen die Migration der bestehenden Inhalte aus dem öffentlichen Teil. Die große Zahl an zwischenzeitlich veröffentlichten Beiträgen verlangte nach einer überwiegend automatisierten Lösung. Und tatsächlich gelang dies auch mit dem Drupal-Modul Joomla-to-Drupal Converter. Allerdings gab es hierbei einige Stolpersteine, die man kennen sollte, damit man sich nicht unnötige Arbeit macht.

Joomla > Drupal > Drupal

Für die Migration einer Joomla-Installation zu Drupal gibt es zwei Module Joomla To Drupal und Joomla-to-Drupal Converter. Das erstere war zum Zeitpunkt des Testbeginns noch im Alpha-Stadium und schien seit Dezember 2009 nicht mehr weiter entwickelt worden zu sein. Eine Version für Drupal 7 gab es noch nicht (seit kurzem gibt es jetzt eine erste Alpha-Version). Das zweite Modul gab es immerhin in einer Beta-Version, allerdings auch nur für Drupal 6. Damit war klar, dass die Migration nach Drupal 7 eines Umweges über Drupal 6 bedurfte. Das ist allerdings relativ einfach – vor allem wenn eine Seite wenig Drittmodule benutzt. Also fiel die Wahl auf den Joomla-to-Drupal-Converter. Dessen Dokumentation ist leider sehr spartanisch aber ausreichend, um es zu benutzen. Einige Stolperfallen gibt es allerdings und die wollen wir als erstes betrachten.

Ecken und Kanten

Im ersten Schritt legt man eine frische Drupal6-Installation an und bereitet diese für den Import der Joomla-Daten vor. Auf folgendes muss man dabei unbedingt achten:

  1. Drupal muss unbedingt in der richtigen Sprachversion installiert werden - in unsererem Falle in Deutsch -, weil sonst in allen Überschriften und Taxonomy-Terms die Umlaute fehlerhaft dargestellt werden.
  2. Bei allen Inhaltstypen, in die importiert werden soll (hier waren es die Typen "Seite" und "Artikel"), muss in den Webseiten-Einstellungen das Standardformat auf Full HTML eingestellt werden. Wenn dies nicht gemacht wird, werden beim Importieren der Inhalte alle Nodes, die das Converter-Modul anlegt, auf "Filtered HTML" eingestellt, was dann zu fehlerhaften Darstellungen führt (z.B. werden keine Bilder angezeigt).
  3. Das Profile-Modul muss vor dem Import aktiviert werden (standardmäßig ist es bei einer neuen Drupal-Installation ausgeschaltet), damit User-Profilfelder importiert werden können. Andernfalls kommt es hier zu Fehlermeldungen.
  4. Bei Drupal gibt es genau einen Superadministrator, den User 1. Dieser wird bei der Installation immer angelegt. Bei Joomla kann es dagegen mehrere Super-Admins geben. Im vorliegenden Falle gab es unter Drupal den User 1 mit dem Namen "Admin" und unter Joomla zwei Super-Admins mit den Usernamen "Admin" und "Admin2". Beim ersten Testimport passierte nun folgendes: Der Converter hat alle Beiträge des Users "Admin2" dem Drupal-User 1 ("Admin") zugeordnet. Dagegen wurden sämtliche Beiträge vom Joomla-User "Admin" nicht übernommen. Zusätzlich wurde noch die Taxonomy völlig durcheinander gewürfelt. Die Seite war damit nicht mehr benutzbar. Die Abhilfe war zum Glück einfach: Nach Umbenennen des User "Admin" in Joomla in "Admin1" lief der Import fehlerfrei. Es darf also unter Joomla keinen User geben, der genauso heißt wie der User 1 in Drupal - zumindest nicht, wenn es mehrere Super-Admins gibt.

Nach dem Abschluss dieser Vorarbeiten kann man die eigentliche Migration vorbereiten. Jetzt ist auch ein guter Zeitpunkt, um ein Backup der Drupal-Datenbank zu machen. Sollte beim Import etwas schief gehen, muss man nicht die ganze Installation und Konfiguration wiederholen. Ein Backup der Joomla-Datenbank ist dagegen nicht notwendig (schadet aber auch nicht), da der Konverter nur lesend auf diese Datenbank zugreift.

Als nächstes wird das Converter-Modul auf der Drupal-Seite installiert und aktiviert. Anschließend kopiert man die Datei configuration.php der Joomla-Seite in den Modulordner ../sites/all/modules/joomla2drupal – dadurch kann der Konverter die Zugangsdaten für die Joomla-Datenbank auslesen und direkt in seiner Konfiguration eintragen. Jetzt geht man auf die Konfigurationsseite von Joomla-to-Drupal Converter. Dort sollten die Zugangsdaten zur Joomla-Datenbank erscheinen. Nun ergänzt man noch die fehlenden Angaben wie z.B. den absoluten Pfad und gibt an, welche Joomla-Inhalte in welche Drupal-Inhaltstypen importiert werden sollen. Das ganze sieht dann ungefähr so aus:

Konfigurationsseite des Moduls "Joomla To Drupal Converter"

Jetzt kommt der spannende Moment: Ein Klick auf "Start Migration!" und der Import beginnt. Hat man alles richtig vorbereitet und eingestellt, so dauert der Vorgang  – je nach Datenmenge – einige Sekunden bis Minuten und sollte ohne Fehlermeldungen durchlaufen.

Feinschliff

Nun hat man zwar alle Daten in Drupal importiert, aber damit ist die Arbeit noch nicht beendet. Folgende Schritte dürften mehr oder weniger immer notwendig sein:

  1. Aufräumen der Taxonomy: Diese musste zunächst einmal an die neue Seitenstruktur angepasst werden. Einzelne Rubriken sollten wegfallen, andere zusammengefasst werden. Hilfreich hierbei war das Modul Term merge, mit dessen Hilfe man einzelne Terms mit anderen verschmelzen kann, wobei alle Artikel mit dem alten Term automatisch den neuen erhalten. Nachdem dies erfolgt war konnten die Inhalte mit Hilfe von Views und Panels in der neuen Seitenstruktur dargestellt werden.
  2. Anpassen der Bildpfade: Diese fangen in Joomla standardmäßig mit "images" an und liegen im gleichnamigen Ordner im Root-Verzeichnis der Joomla-Installation. Kopiert man nun alle Bilder in Drupal ebenfalls in diese Ordnerstruktur (Wichtig: Diesen Pfad unbedingt in Drupal unter "Einstellungen >> Dateisystem >> Dateisystem-Pfad" eintragen), müsste es eigentlich passen. Leider tut es das in der Praxis nicht. Relative Pfadangaben fangen in Joomla direkt mit dem Verzeichnisnamen an. Drupal verlangt dagegen, dass die Pfade mit einem "/" beginnen. Als Lösung bleibt nur, dass "/" händisch zu ergänzen oder die Bilder neu einzubinden. Hat man viele Bilder, ist das sicher keine gute Idee. Alternativ kann man die Pfadangaben per SQL-Befehl direkt in der Datenbank ändern. Aber bitte vorher ein Backup anfertigen!
  3. Das Gleiche gilt für die Pfade von Dateianhängen. Auch diese müssen entweder in der Datenbanktabelle geändert werden oder man hängt den jeweiligen Anhang manuell neu an die entsprechende Node an.
  4. Ein Sonderfall waren Bilder, die unter Joomla per Mambot eingebettet waren. Für den Mambot gibt es zwar verschiedene Alternativen in Drupal, z.B. Insert View (bettet Views in den Node Body ein), aber da das Migrations-Modul davon keine Ahnung hat, bleiben die Mambot-Tags unverändert im Content stehen. Immerhin lassen sie sich leicht durch die Inhaltssuche aufspüren und ersetzten. Zum Glück waren hiervor nur wenige Nodes betroffen.
  5. Ersatz von Dritt-Komponentem: Hier galt es noch einen Ersatz für die Newsletter-Komponente  mkpostman zu finden. Die Wahl fiel auf das sehr gute phpLIST, das mit Hilfe des gleichnamigen Drupal-Moduls direkt an Drupal angebunden wurde. Leider lieferte der User-Export von mkpostman nur eine unbrauchbare XML-Datei, die sich nicht einfach in phpLIST importieren ließ. Gelöst wurde dieses Problem, indem die Tabellen von mkpostman via phpMyAdmin in CSV-Dateien exportiert und anschließend mit Hilfe von OpenOffice Calc in einzelne Dateien für jede Newsletter-Liste aufgeteilt wurden. Danach war der Import in phpLIST völlig problemlos.

Nach dem erfolgreich bestandenen Test ging es dann an die eigentliche Umstellung. Zusätzlich zu den Arbeiten im Testlauf wurden zunächst alle veralteten Inhalte, die nur auf "unveröffentlicht" gesetzt waren, aus der Joomla-Installation gelöscht (nachdem die Joomla-Datenbank dieses mal zuerst gesichert worden war ;-)), um diese Altlasten nicht länger mitzuschleppen. Anschließend erfolgte erst die Migration nach Drupal 6 wie zuvor beschrieben und anschließend das Upgrade auf Drupal 7. Nach abschließenden Tests und dem Einbinden des neuen Templates konnte die neue Webseite dann wieder online gehen.

Fazit

Eine Migration von Joomla zu Drupal ist relativ problemlos, solange man in Joomla nicht allzu viele Komponenten oder Mambots verwendet, die nicht zum Core gehören. Beachtet man die Fallen, die das Converter-Modul enthält, lässt sich auch eine Joomla-Installation mit vielen Inhalten leicht auf Drupal übertragen. Schwieriger wird das Ganze, wenn eine größere Zahl von Dritt-Komponenten im Einsatz ist. Für diese muss man zum einen für Drupal einen Ersatz finden – was meistens gelingen dürfte – zum anderen ist die Migration unter Umständen erheblich aufwändiger und teilweise mit Handarbeit verbunden. In diesem Fall hat sich der Aufwand jedenfalls gelohnt.

Links

Drupal Homepage (englisch): https://www.drupal.org/home

Drupals deutschsprachige Community: http://www.drupalcenter.de/

Joomla Homepage (englisch): http://www.joomla.org/

Joomla in Deutschland: http://www.joomlaos.de/

phpLIST Homepage (englisch): http://www.phplist.com/