Wer mit Drupal Bildergalerien, Klickstrecken oder z.B. Anleitungen erstellen möchte, steht vor der Herausforderung, eine größere Menge an Bildern, Videos, Code-Schnipseln oder anderen Assets hochzuladen.

Üblicherweise möchten Redakteure diese Massen-Uploads in einem einzigen Schritt erstellen mit gemeinsamen Meta-Eigenschaften wie z.B. Autor, Copyright und Schlagworten versehen können.

Diese Anforderung adressiert das Modul "Blizz Bulk Creator", welches zweite Modul unserer Blizz-Familie ist, dass wir auf drupal.org online gestellt haben.

Bildergalerien mit dem Bulk Creator erstellen

Im unserem Beispiel gehen wir von einer komplexen Anforderung aus, die auf einer Paragraphs-Konfiguration beruht, die wir üblicherweise für mehrseitige Artikel in unseren Projekten verwenden.

Der allgemeine "Container" für alle Inhalte einer einzelnen Seite stellt in unserem Fall ein Node dar. Jede Node besitzt drei Regionen für Header-, Content- und Footer-Inhalte, die Redakteure auf jeder Seite veröffentlichen können. Das Modul funktioniert jedoch für sämtliche Entities und ist nicht an Nodes gebunden sondern grundsätzlich an alle Content-Entities, die fieldable sind.

Diesr komplexere Ansatz ist dem Umstand geschuldet, dass dieses Datenmodell mehrseitige Artikel unterstützt, deren einzelne Seiten gemeinsame Header- und Footer-Bereiche besitzen. Das für die Paginierung erforderliche Modul werden wir in nächster Zeit ebenfalls contributen.

Anwendungsbeispiele sind mehrseitige Artikel wie "Die 15 besten Technikübungen" auf swim.de bzw. Bildergalerien wie "Die Rennwoche von Patrick Lange" auf tri-mag.de.

Die jeweils Seiten-individuellen Inhalte – in unserem Beispiel "Clickstrecken-Items" mit Bildern – sind die, die sich im Content-Paragraphs-Bereich der Node befinden.

Paragraphs Contentmodell

Für unser Beispiel verwenden wir folgende Konfiguration:

Ein Nodetyp "Clickstream" enhält Parapraphs "Clickstream-Elements". Diese enthalten "Clickstream-Items" und darin wiederum befinden sich die Media-Bundels mit den Bildern und Meta-Informationen wie Autor, Bildunterschrift und Schlagworte.

Bei Erstellung eines Artikels sollen Redakteure in einem einzigen Schritt beliebig viele Klickstrecken-Elemente erstellen können, die

  • individuelle Bild- oder Video-Inhalte je Element und
  • gleichförmige Angaben für Autor, Copyright und Schlagworte enthalten und die
  • automatisch entsprechend referenziert werden, sodass sie sich in der richtigen Content-Region des Artikels befinden.

Konfigurations-Schritte

Die Konfiguration nehmen Site-Builder in zwei Schritten im Backend vor. Im ersten Schritt werden Basis-Konfigurationen erstellt, die im zweiten Schritt mit den gewünschten Entity-Typen verknüpft werden.

1. Konfiguration Bulk Create

Im ersten Schritt wird gefragt, für welche Media-Bundles die Massenerstellung von Inhalten möglich sein soll und wie sich die Felder innerhalb des Ziel-Bundles verhalten sollen. Bulk Create funktioniert derzeit nur für Media-Bundels.

In unserem Beispiel soll dies für Media-Bundles vom Typ "Image" möglich sein. Innerhalb dieses Typs gibt es ein Feld namens "Image". Für jedes per Massenupload hochgeladenes Bild wird also eine eigene Entity erstellt. Neben dem "Image"-Feld gibt es zwei weitere Felder "Autor" und "Tags" im Bundle, die bei der Erstellung mit Default-Werten befüllt werden sollen.

In diesem ersten Schritt haben wir eine Konfiguration erstellt, die wir Namen "Clickstream-Bulkcreation" genannt haben.

2. Verwendung von Bulk Create

Im zweiten Konfigurationsschritt lässt sich die eben erstellte Konfiguration auf beliebig viele Entity-Typen anwenden. In unserem Beispiel wenden wir die Konfiguration "Clickstream-Bulkcreation" an, um Nodes vom Typ "Clickstream" erstellen zu können.

Das System durchsucht dabei alle Felder des Node-Typen sowie rekursiv sämtliche referenzierten Entitäten – wie z.B. mit Paragraphs eingebundene Sub-Inhalte – und findet – in unserem Beispiel – ein Feld "Clickstream (Paragraph) > Clickstream-Item (Paragraph) > Image (Media)". Wir erinnern uns an die eingangs beschriebene verschachtelte Paragraphs-Struktur.

Die Verknüpfung beliebig vieler Kind-Inhalte innerhalb eines Eltern-Feldes erfordert ein mehrfach instantiierbares Referenz-Feld. Da es potentiell mehrere solcher Felder geben kann, wird der Benutzer aufgefordert, das entsprechende Referenzierungs-Feld anzugeben.

Redaktionelle Erstellung von Massen-Uploads

Bei der Erstellung von Artikeln erhalten Redakteure bei entsprechend konfigurierten Entities einen eigenen Bereich mit dem Namen der Konfiguration. In unserem Beispiel heißt dieser "Clickstream-Bulkcreation".

Diese Maske enthält die entsprechend der Konfiguration eingerichteten Default-Felder sowie ein – in unserem Beispiel – ein Feld zum Hochladen von Bildern. Dieses Formular verwendet übrigens das Eingabe-Widget, das für das Feld in der jeweiligen Entity hinterlegt ist. Auf diese Weise wäre beispielsweise auch die Beschneidung von Bildern unterstützt, sofern Image-Crop für das jeweilige Media-Bundle eingerichtet wäre.

Bei der Erstellung der Inhalte werden die Entity-Titel automatisch vergeben.

Sofern gewünscht, lassen sie sich selbstverständlich nachträglich redaktionell bearbeiten. In unserem Beispiel "Bulk created item 3 (Clickstream-Bulkcreation)"

Ausblick

In der nächsten Zeit werden wir die die PHP-Klassen um weitere automatische Tests erweitern.

Die Funkationalität des Moduls ist vergleichsweise komplex und schwer in einem Blogpost zu berschreiben. Wer eine Möglichkeit zur massenhaften Erzeugung von Entities sucht, wird in dem Blizz Bulk Creator sicherlich ein geeignetes Tool finden. Die Konfiguration ist relativ einfach, da der Site-Builder recht komfortabel durch die Eingabe-Oberflächen geführt wird.

Das Modul scheint sich recht erfolgreich zu entwickeln: Fünf Tage nach Veröffentlichung des Moduls hat das der Bulk Creator bereits 368 Downloads.