Nachbau einer Drupal 6 -Bildergalerie nach dem Upgrade auf Drupal 7

Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
6/12
6/12

Nachbau einer Drupal 6 -Bildergalerie nach dem Upgrade auf Drupal 7

Bildergalerie auf der Webseite Berggenuss

Die alte Bildergalerie in Drupal 6

Wir hatten eine Website mit Drupal 6, auf der wir Bilder in Bildergalerien organisiert hatten.

Die Bildergalerien waren mit dem Modul

Verwendet wurden ausserdem die Submodule

  • Image Attach
  • Image Gallery
  • Image Import
  • ImageMagick Advanced Options

sowie

und

Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
12/12

Für die Zuordnung beim Massenupload wurde

Die Namen der Bildergalerien wurden als Taxonomiebegriffe angelegt und beim Massenupload als Token für Filefileld Paths verwendet. Alle Bilder werden dadurch beim Upload in einem Unterordner mit dem entsprechenden Namen im Dateiverzeichnis auf dem Server abgelegt. Es wurden unterschiedliche Bildderivate angelegt, damit nicht die Originalbilder zur Darstellung verwendet werden mussten, um die Ladezeiten zu verkürzen. Die Bildderivate werden beim Speichern des Uploads automatisch erzeugt.

Über einen View-Block lassen sich einzelne Galerien an einen Node anhängen oder die Einzelbilder lassen sich über IMCE im Texteditor einfügen. Die Bilder können in einer Lightbox gruppiert oder einzeln dargestellt werden, wie man das eben haben will.

Soweit der Stand in Drupal 6.

Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
6/12
6/12

Neue Bildergalerie in Drupal 7

Folgendes wollten wir unbedingt wieder haben:

  • Unterschiedliche Galerien, idealerweise in hierarchischer Anordnung
  • physikalisch unterschiedliches Verzeichnis für jede Galerie (auch im Hinblick darauf, dass unterschiedliche Nutzer eigene Galerien erstellen können)
  • Massenupload mit Token zur Taxonomie
  • Galerien als Block, 3 Bilder werden zufällig als Previw gezeigt, den Rest zeigt die Lightbox als Slideshow
  • Einzelbilder über IMCE für Textkörper in Nodes verwendbar, ebenfalls mit Grossansicht als Lightbox

Ein erster Versuch, die Bilder mit dem Image_Legacy_Module wie hier beschrieben https://drupal.org/node/757808#comment-3933126
zu migrieren, klappte nur teilweise. Bei der Migration werden Pfade in der Datenbank verändert. Beispielsweise heisst die Drupal-6-Tabelle 'files' in drupal 7 'file_managed'

Zwar lief das Update der Tabellen wie vorgesehen. Da die Speicherung der Bildderivate – also der unterschiedlichen Größenversionen der Bilder – in Drupal 7 jedoch in einer ganz anderen Struktur erfolgt als in Drupal 6, hätte nicht nur die Datenbank in einem weiteren Schritt aufwändig weiter manipuliert werden müssen, um die unterschiedlichen Pfade abzubilden, es hätten auch die Verzeichnisse alle händisch angelegt und die Dateien physikalisch neu sortiert werden müssen.

Zur Erläuterung: in Drupal 6 lagen alle Bildderivate, die zu einer Galerie gehören, im selben Verzeichnis. Das sah schematisch so aus:
/sites/default/files/blog/images/galery/ ,
(siehe nebenstehend)

Nachbau Bildergalerie
Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
12/12

Dagegen liegen in Drupal 7 nur die Originalbilder in einer Ordnerstruktur, die unter /sites/default/files/blog/images/galery/ liegt.
(Bild links)

Die Bildderivate werden dagegen im Unterordner Styles abgelegt, in einer Verzeichnisstruktur, die etwa so aufgebaut ist:
/sites/default/files/blog/styles/einzelner_bildstil/public/images/galery/
(Bild rechts)

Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
4/12
4/12
4/12
Verzeichnisbaum Originial
Verzeichnisbaum Styles
Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
12/12

das heisst, im ordner styles wird für jeden Bildstil – der in Drupal 6 noch Dateigröße hiess – ein neuer Unterordner angelegt, in dem die gesamte Galeriestruktur nochmal angelegt wird. Die Dateien selbst heissen hier genau gleich wie die Originaldateien! Zum Glück müssen wir das nicht händisch machen, sondern diese Struktur legt Drupal beim Aufruf der Bildderivate über einen Node oder eine View ohne unser explizites Zutun an.

Andere Galeriemodule in Drupal 7, die mit Einzelgalerien anlegen, erfüllen die Anforderungen ebenfalls nicht, ich habe mir verschiedene angesehen.

Als Lösung kam dann folgendes zum Einsatz:

Die Taxonomie für die Bildergalerien wurde aus Drupal 6 übernommen.

Für den Massenupload wurden die Module

installiert. Die Module werden beide benötigt, da das zweite vom ersten abhängt. Damit lassen sich in einem Image-Field mehrere Bilder uploaden, und es lassen sich bei Bedarf auch weitere Bilder in das gleiche Feld nachladen.

Mit

wurde festgelegt, in welchen Ordner die Dateien gespeichert werden. Dazu wurde dem Inhaltstyp image das Feld 'Bildergalerien' hinzugefügt, als Feldtyp 'Referenz auf Taxonomy-Begriffe' und Steuerelement 'Auswahlliste' gewählt. Unter den Einstellungen wurde das Vokabular 'Bildergalerien' konfiguriert.

Damit stand dann für die Einstellungen bei File (Field) Path settings der Dateipfad

images/galery/[node:field_bildergalerien] zur Verfügung.

So kann dann der Upload ganzer Bildverzeichnisse auf einmal gemacht werden und die Dateien landen dann alle im gewünschten Ordner /sites/default/files/blog/images/galery/

Für die Ausgabe der Bilder und für die Generierung der Bildderivate verwenden wir eine View. Ich beschreibe zuerst den generellen Aufbau der View, dann die Generierung der Derivate und zuletzt den Einbau von Einzelgalerien auf einer einzelnen Seite.

Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
6/12
6/12

Wir bauen eine View vom Typ Inhalt

Abstand Pixel
30
Bildergalerie View
Bildergalerie Gruppierung
Abstand Pixel
30
Breite Inhalt
12/12
Breite Layout-Container
Ganze Breite
Spalten Inhalt
6/12
6/12

Ausrichtung: horizontal

Anzeige: Felder

Filterkriterien:

Inhalt: veröffentlicht (ja)

Inhalt: Typ = Bild Inhaltstyp

Erweitert:

Kontextfilter: (Begriff aus field_bildergalerien) Taxonomie-Begriff: Begriff-ID

Beziehungen: Inhalt (Bildergalerien)

Bildderivate

Die View hat 2 Seiten (pages). Auf jeder Seite gibt es die Felder

Inhalt (Titel) Konfiguration: von der Anzeige ausschliessen, dieses feld mit seinem ursprünglichen Inhalt verlinken

Inhalt (Bild) Konfiguration: Formatierer Bild, Darstellung: eine aus der Drop-Down-Liste

Bilderderivate Dropdown