comm-press: Your Drupal agency in Hamburg, Germany: Consulting, training, programming, service, webdesign and hosting

Drupal Livesysteme . Komplexe Modul-Konfigurationen mit Features in eine Live-Umgebung ausrollen

von Carsten Rhein
am

In der Regel wird eine Website in einer lokalen Umgebung installiert und konfiguriert, um sie nach ihrer Fertigstellung auf ein Live-System zu übertragen. Spätere Änderungen an der Site werden lokal vorgenommen, getestet und dann auf die Live-Website überspielt. Dies ist mit Drupal nicht immer leicht, da unter Umständen komplette Module samt Konfiguration, Datenbank-Einträgen und komplexen Abhängigkeiten zwischen einzelnen Modulen übertragen werden müssen.

Ein konkretes Beispiel anhand einer Slideshow mit Views und CCK:

Der Aufbau

  • Ein Inhaltstyp Slideshow-Bild bestehend aus dem Titel sowie einem ImageCrop-Field.
  • Ein ImageCache-Preset slideshow-image.
  • Eine View zur Anzeige der Slideshow slideshow.

Erforderliche Module

  • cck
  • filefield
  • imagefield
  • imagefield_crop
  • views
  • views_slideshow
  • imageapi
  • imagecache
  • imagecache_actions

Nachdem dieser Aufbau zusammengestellt und getestet ist, wird er auf die Live-Umgebung überspielt. Nun fällt nach kurzer Zeit auf, daß die Slideshow nur umständlich bearbeitet werden kann. Also bedarf es einer weiteren View, welche eine Übersicht aller vorhandener Slideshow-Bilder als Thumbnail mit 'Bearbeiten'- bzw. 'Löschen'-Link versehen, sowie einem direkten Link zum Hochladen weiterer Grafiken bereit stellt.

Folgendes kommt also hinzu:

  • Ein ImageCache-Preset slideshow-thumbnail.
  • Eine View zur Anzeige der Admin-Oberfläche slideshow-edit.

Auf der Testumgebung ist dies schnell aufgebaut und getestet. Es stellt sich lediglich die Frage, wie diese Erweiterung unkompliziert auf dem Live-System ausgerollt werden kann ohne diese per Hand zu replizieren, da sich an dieser Stelle viele ungewollte Fehler einschleichen können.

Möglich wird dies mit dem Modul Features. Durch Features lassen sich diverse Modul-Einstellungen und Parameter in ein individuelles Modul zusammenfassen um sie duplizieren und ausrollen zu können. Es wurde also ein Feature 'slideshow' erstellt, welches mit dem ersten Teil der Konfiguration an das Live-System ausgeliefert wurde. Als dann die zweite View hinzugefügt werden sollte, wurde das ursprüngliche Feature einfach um die benötigten Funktionen erweitert, auf das Live-System überspielt und das dort vorhandene Feature ersetzt. Die neuen Einstellungen sind so auf einfache Weise ausgerollt.


Das aktuelle Feature 'slideshow' beinhaltet als folgende Einstellungen:

  • Inhaltstyp Slideshow-Bild
  • ImageCrop-Field
  • ImageCache-Presets slideshow_image und slideshow_thumbnail
  • Views slideshow und slideshow_edit

Sowie die Abhängigkeit des Features von den Modulen:

  • Content (CCK)
  • Features
  • FileField
  • ImageAPI
  • ImageAPI GD2
  • ImageCache
  • ImageCache UI
  • ImageField
  • Image Crop
  • Strongarm
  • Views
  • Views Slideshow
  • Views Slideshow: SingleFrame
  • Views UI

Das Modul Strongarm ermöglicht es, auf den Variables-Table in der Datenbank zu zugreifen und somit Einstellungen aus der Datenbank in das Feature mit einfließen zu lassen.

Fazit

Leider unterstützen nicht alle Module eine Features-Anbindung. Somit sollte das Wunsch-Modul zuvor auf seine Kompatibilität überprüft werden. Fest seht aber: Mit Features lassen sich fehleranfällige händische Konfigurationen an einem Live-System vermeiden, sowie nachvollziehbare Arbeitsschritte und Basis-Voraussetzungen etablieren, welche zu einer produktiven Entwicklung beitragen. Zusammen mit Strongarm lassen sich bereits viele Module anbinden. Features unterstützt ein automatisches Update via XML-Server, welches auch durch die Drupal-Konsole Drush gesteuert werden kann. Zuletzt noch ein netter Nebeneffekt: Ein fertiges Feature kann auf einer anderen Website wiederverwendet werden.

Ich mag's

Das hier beschriebene Feature steht im Anhang zum Download bereit. Sofern alle benötigten Module vorhanden sind, kann es aktiviert werden und nach einem oder mehreren Cron-Lauf/Läufen sollten alle beschriebenen Funktionen nutzbar sein. Da es sich lediglich um ein Feature zur Demonstration handelt, müssen unter Umständen noch Anpassungen an die eigenen Vorlieben getätigt werden. Viel Spaß damit.