DUG Treffen 11.05. Thema - Upgrade auf Drupal 6

Da sich bis jetzt für heute abend noch kein Vortrag gefunden hat, schlage ich vor, etwas über das Upgrade auf Drupal 6 zu referieren. Nach mittlerweile 4-5 erfolgreich durchgeführten Upgrades hat sich eine relativ sichere Best Practice herausgebildet, die ich euch näherbringen will. Im Folgen in einfacher Listenform die einzelnen Schritte. Es sind recht viele Schritte, aber jeder einzelne macht Sinn. Der Arbeitsaufwand für ein Upgrade ist leider doch hoch, selbst wenn man sich schon damit auskennt.

Die Liste wird lang und länger - ich werde nicht jeden einzelnen Punkt ausführlich behandeln, sondern die wichtigsten herauspicken.

Bei einer Seite mit vielen Views und evtl. noch Mehrsprachigkeit, vielen Blöcken usw. sollte man zwei Manntage rechnen. Bei einer kleinen Seite, die nur wenige Module verwendet und Views gar nicht, kann es auch in drei bis vier Stunden fertig sein.

Es ist dem persönlichen Geschmack überlassen, wie viele Kopien des kompletten Drupal-Ordners man zwischendrin erstellt und unangetastet liegen lässt, um evtl. einen Schritt zurückgehen zu können, wenn etwas schiefgeht. Von der Datenbank kann man allerdings gar nicht genug Kopien erstellen zwischendrin. Das kostet auch kaum Zeit. Es empfielt sich zudem, die Kopien (ich erstelle diese immer mit mysqldumper) sprechend zu benennen. So z.B. Drupal 5 Original, Drupal 5 alle Module upgegradet, Drupal 5 alle Module deaktiviert usw.

Vor allem wenn man ein Upgrade das erste Mal durchführt, läuft man ca. drei bis vier Mal vor die Wand und muss von vorne anfangen. Das Vorhalten von Kopien der Datenbank und der kompletten Dateistruktur von erfolgreich durchgeführten Teilschritten erspart erheblich Adrenalinausstoss.

Hier die notwendigen Schritte: 

  • Erstellen einer lokalen Kopie der Website: Upgrade immer lokal oder in anderem Online-Ordner als Live-Seite durchführen
  • Sicherung Datenbank und Dateien
  • Aktualisierung aller Drupal 5 Module auf neueste Version (evtl. Vorsicht, wenn Imagecache noch nicht in Version 2.x)
  • Dritte Kopie erstellen: Die upgegradete D5-Version unangetastet lassen
  • Umstellen auf Garland als Theme für Front- und Backend
  • Deaktivieren aller Contributed Modules
  • Evtl. Deinstallieren von nicht mehr benötigten Modulen
  • Löschen aller Contributed Modules aus Module-Folder
  • Sichern der Datenbank
  • Suchen und Herunterladen aller Module für Drupal 6 (Check: welche brauche ich nicht mehr, unbenutzt, nicht verfügbar für Drupal 6, bzw nicht benötigt (update_status) bzw. umbenannt (Content Profile) umstrukturiert (i18n, Translation)
  • Am besten noch eine weitere Kopie erstellen und die geleerte Version von Drupal5 unangetastet lassen
  • Herunterladen Drupal 6 Core.
  • Löschen aller Dateien und Ordner ausser /files und /sites
  • Drupal Core Dateien bis auf den Ordner /sites in Website-Ordner kopieren
  • Datenbank-Update, überprüfen ob alles geklappt hat, falls nicht, Fehler suchen, beheben und nochmal durchführen ausgehend vom letzten Datenbank-Upgrade
  • Admin Menu installieren (persönliche Präferenz)
  • Deutsche Sprachdatei für Drupal6 herunterladen und installieren

Module ausserhalb des Modules-Ordners aufbewahren

Drupal 6 Module immer einzeln in den zunächst leeren Modules-Ordner kopieren. Denn in Drupal 6 versucht die update.php für jedes Modul auszuführen, egal ob es aktiviert ist oder nicht. Bei Modulen, die voneinander abhängig sind und nacheinander aktiviert werden müssen, führt das sonst zu einer korrupten Datenbank und man darf von vorne anfangen.

CCK upgraden:

dies ist der schwierigste Teil des gesamten Upgrades und die Reihenfolge muss genau eingehalten werden. Geht aber mittlerweile problemlos 

  • CCK und ImageAPI installieren (falls es verwendet wird)
  • alle CCK-Module bis auf Content Permissions aktivieren
  • Datenbank-Update durchführen
  • Filefield installieren
  • Datenbank-Update durchführen
  • Imagefield installieren
  • Datenbank-Update durchführen
  • Nachschauen, ob alle Imagefields korrekt dargestellt werden. Wenn ja: durchschnaufen und sich freuen Smiling
  • Datenbank-Backup erstellen
  • Imagecache installieren, andere CCK-Zusatzfelder installieren
  • Thickbox installieren (falls verwendet)
  • Jetzt sollten die Felder in den Conten Types wieder richtig angezeigt werden
  • Und wieder ein Datenbank-Backup erstellen, wie nach allen folgenden grösseren Schritten

I18n upgraden

Dies habe ich erst einmal gemacht. Es hat einige Fussangeln. Im Wesentlichen muss man vor allem beachten, daß die Übersetzung von Nodes jetzt nicht mehr von 118n qabhängt, sondern es ein Core-Modul "Translation" gibt, das hierfür zuständig ist. i18n macht nur noch Sachen wie Menü-Übersetzung, Taxonomie- und Block-Übersetzung sowie Zusatzfunktionen

Andere Module upgraden - ausser Views

Die meisten anderen Module machen kaum Probleme, auch gibt es nicht solche extremen Abhängigkeiten wie bei CCK. Bei grösseren Modulkomplexen wie Übercart oder Organic Groups sieht das natürlich anders aus, und hier kann ich mangels Erfahrung nichts über den Upgrade-Prozess sagen. Aber Webform, Pathauto und wie sie alle heissen, upgraden recht problemlos

Theme upgraden

Das Theming hat sich in Drupal 6 geändert, allerdings nicht zu sehr. Einen kompakten Leitfaden gibt es hier: http://www.drupalcenter.de/handbuch/17767

Die wesentlichen Änderungen sind Folgende:

  • Man muss eine  .info-Datei anlegen.
  • Wenn man eigene Regions definiert hat, werden diese Definitionen in die .info verlegt, mit einer etwas anderen Syntax als in Drupal 5
  • Wenn man sonstige Funktionen in der template.php definiert hat, muss man diese je nachdem umschreiben. Die Template vars sind durch Preprocess-Funktionen ersetzt worden, daher muss dieser Bereich umgeschrieben werden. Views Theming hat sich auch geändert, dazu unten mehr
  • Ab Drupal 6.11 verändert sich die Reihenfolge der Headervariablen geringfügig, siehe Hinweis im oben verlinkten Artikel

Views upgraden

Views 2 ist ein kompletter Rewrite von Views 1. Vorhandene Views lassen sich nur bedingt konvertieren. Die wichtigsten Eigenschaften bleiben allerdings beim Konvertieren erhalten.

Das Vorgehen ist Folgendes:

Auf der Views-Haupt-Adminseite gibt es einen Tab Tools

Dann den Untertab "Convert" auswählen

Alle dort noch nicht als "Converted" bezeichneten Views mit HIlfe des Buttons "Convert" konvertieren. Jeder View muss nach dem Konvertieren noch gespeichert werden. Die wichtigsten Eigenschaften bleiben erhalten:

  • Der Pfad bei Seiten-Views
  • Die Info, ob es sich um einen Block oder eine Seite handelt
  • die meisten Filter

Allerdings geht auch einiges verloren, das muss man dann von Hand nachtragen. Z.B. die Sortierreihenfolge: wenn man Descending ausgewählt hatte (also die neuesten Beiträge oben bei Sortierung nach Beitragsdatum), dann ist das jetzt andersrum und ascending.

Zusammen mit der je nachdem nicht mehr funktionierenden Block Visibility kann es so manche Überraschung geben, daß Views gar nicht mehr oder anders angezeigt werden. Mit etwas Geduld bekommt man es aber ohne zu grossen Aufwand wieder hin.

Block Visibility überprüfen und ggf. korrigieren

Da sich in Drupal 6 API-Funktionen verändert haben (z.b. taxonomy_node_get_terms), muss man die Block Visibility Einstellungen überprüfen, wenn man PHP Snippets für die Sichtbarkeit verwendet hat

Views Theming korrigieren

Das Theming hat sich in Views 2 komplett verändert. Allerdings - es ist auch viel konsequenter und letztlich einfacher geworden. Wenn man also seine Views gethemed hatte, kann hier viel Arbeit anstehen. Allerdings ist meist nur die Verschachtelung der divs und Listen anders. Wenn man die Styles einmal angelegt hat, muss man sie meist nur auf andere Html-Elemente übertragen, was die Arbeit deutlich reduziert.

Persönlich mache ich allerdings viel Gebrauch von der neuen Styling-Option "unformatiert". In Views 1 ging das nur über Listen, denen man dann alles Listenhafte austreiben musste (das war immer ärgerlich). Man kann allerdings die Listenformatierung beibehalten, dann muss man die Styles kaum verändern.

Es verändern sich häufig die Namen von Containern innerhalb des Views. Wenn man also kaskadierend z.B. eine Liste abhängig vom Container, in dem sie sich befindet, gestyled hatte, muss man diese neuen Namen nachschauen und die Styles entsprechend neu zuweisen.

Menüstruktur prüfen

Drupal 6 hat ein neues Menüsystem. Das ist schön. Weniger schön ist Folgendes: Ein Menüpunkt in Drupal 6 muss - anders als in Drupal 5 - auf einen tatsächlch vorhandenen Pfad verlinken, ansonsten kann man ihn nicht erstellen oder er wird nicht angezeigt.  Wenn man im Menü in Drupal 5 auf dynamisch generierte Views verlinkt hatte (über Argumente erzeugt), kann es sein, daß die Pfade sich beim Upgrade ändern oder nicht mehr da sind. In diesem Fall sind die Menüpunkte zwar in der Datenbank vorhanden, werden aber im Menü-Backend nicht angezeigt. Nicht wundern. Am Einfachsten ist es evtl., diese Leichen direkt in Phpmyadmin aus der Datenbank zu löschen und neu anzulegen.

Allerdings: wenn für eine "Menüleiche" z.B. für den Pfad /meinpfad wieder ein Node, View oder was auch immer erstellt wird, taucht der Menüpunkt wie von Geisterhand wieder im Menü auf, also das ist auch eine Möglichkeit.

Fortsetzung folgt

0
Your rating: Keines