BLOG

Komplexe Modul-Konfigurationen mit Features in eine Live-Umgebung ausrollen

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.

AnhangGröße
slideshow.tar.gz3.74 KB

Kommentare

Vorschlag: Bilder als Nodes

Betr. der Bildergalerie hätte ich zwei Vorschläge, die dem ganzen aus meiner Sicht Produktreife verleihen und fast schon Wordpress-Usability bieten. ;-)

Bilder nicht als CCK-Inhalte, sondern als eigenständige Nodes implementieren und über Taxonomien einbinden.

Die Idee dazu kam mir nach dem Besuch der "Bildergalerie"-Session von Werner Lappesen auf den Essener Drupaletics 2010. Detailliert ist der Ansatz im Absatz "Photoalben auf Basis von Standardmodulen" auf dem Rückblick der Drupaletics beschrieben.

Zur Zeit "schmiert" CCK einfach ab, wenn eine bestimmte Anzahl an Bildern bzw. CCK-Inhalten je Node überschritten wird: Drupal meldet den User ab, bleibt auf /node/[NID]/edit stehen und meldet "Zugriff nicht erlaubt". Ich hatte leider noch keine Gelegenheit zu suchen, ob dieser Fehler bereits dokumentiert ist, habe dies aber in bereits in zwei Fällen auf unterschiedlichen Websites beobachtet...

Der Vorteil besteht außerdem darin, dass der Content agiler wird: Man könnte Usern eine bestimmte Rolle oder z.B. seinen Freunden (Beziehungen über User-Relationsships) erlauben, Bilder zur Galerie hochzuladen.

Auch können Bilder wieder verwendet werden. Das setzt dann Verschlagwortung der Bilder und einen dritten View zur Suche derselben voraus.

Um die Bedienung abzurunden ist noch ein Modul auf Basis von "Prepopulate" zu schreiben, das die Erstellung neuer Bilder ermöglicht und bei denen die aktuelle Kategorie vorausgefüllt und ausgeblendet ist, damit sie vom Anwender nicht mehr geändert werden kann. 

Dieser Ansatz bringt einige weitere Modulabhängigkeiten mit sich, stellt meines Erachtens aber die ultimative Bildergalerie dar.

Panels verwenden

sofern gewünscht lässt sich durch Einsatz meines Lieblingsmoduls "Panels" Usern mit den entsprechenden Rechten automatisch der zweite View slideshow_edit, der die Bearbeitung ermöglicht, darstellen.

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Mit dem Absenden dieses Formulars, akzeptieren Sie die Datenschutzrichtlinie von Mollom.