Direkt zum Inhalt

Inhalte in Drupal zentral über einen Content-Pool verwalten

Drupal Content-Pool für Content Sharing über mehrere Seiten
15.03.2018 - 08:41 von Manuel Pistner

Drupal bietet mit Installationsprofilen gerade internationalen Unternehmen mit vielen Micropages und lokalen Instanzen, öffentlichen Organisationen in der Verwaltung und Universitäten die Möglichkeit, erhebliche Entwicklungs- und Betriebskosten zu sparen. Einmal entwickeln und beliebig viele Seiten auf der gleichen Codebasis ohne Lizenzkosten zu erstellen und betreiben, reduziert die Time-to-market und gleichzeitig die Kosten in Entwicklung und Betrieb. Viele einzelne und voneinander getrennte Seiten zu betreiben, bringt jedoch auch eine zentrale Herausforderung mit sich: Content Sharing über mehrere Seiten hinweg.

Folgende Beispiele haben wir in vergangenen und aktuellen Projekten gefunden:

  • Digitale Assets / Medien und deren Metadaten zentral verwalten
  • Produkte und Informationen zu Produkten zentral pflegen
  • Pressemitteilungen zentral verwalten
  • Events und Kalendertermine zentral verwalten
  • Impressum und andere rechtliche Informationen zentral verwalten
  • Redaktionelle Artikel und Inhalte zwischen verschiedenen Seiten teilen

Wenn Sie weitere Beispiele haben, hinterlassen Sie gerne einen Kommentar. Wir freuen uns über Ihre Ergänzungen!

 

Zentraler Content-Pool

Um Inhalte zwischen mehreren Drupal Installationen zu synchronisieren, setzen wir üblicherweise einen zentralen Content-Pool ein. Dieser Content-Pool bildet alle Inhaltstypen ab, die auch die einzelnen Seiten bereitstellen (z.B. News, Produkte, Events etc.) und stellt den Zugriff auf diese Inhalte über Webservices bereit.

Häufige Anforderungen im Zusammenspiel zwischen dem Content-Pool und den einzelnen Seiten sind dabei folgende:

1) Inhalte sollen im Content-Pool erstellt werden können
2) Inhalte aus dem Content-Pool sollen für einzelne Seiten zur Auswahl stehen
3) Inhalte sollen kontinuierlich synchronisiert werden ODER lokal bearbeitet werden können
4) Es sollen nur einzelne Felder von Inhalten kontinuierlich synchronisiert werden, andere Felder sollen lokal auf jeder einzelnen Webseite angepasst werden können
5) Einzelne Seiten sollen Inhalte im Content-Pool veröffentlichen und somit auch anderen Seiten bereitstellen können
6) Referenzierte Inhalte (Content Dependencies) sollen automatisch mit synchronisiert werden
7) Content Berechtigungen zum Bearbeiten sollen erhalten bleiben (=Benutzer synchronisieren)


Der Ablauf sieht üblicherweise so aus, dass alle miteinander verknüpften Seiten einen View bereitstellen, in dem neue oder aktualisierte Inhalte aus dem Content-Pool angezeigt werden. Diese Inhalte können dann per Stapelverarbeitung (Batch) "lokal kopiert und lokal verwaltet" oder "lokal kopiert und synchron gehalten" werden. Der Vorteil, die Inhalte als lokale Instanz zu duplizieren, ist, dass mit allen Modulen und Funktionen von Drupal auf die Inhalte zugegriffen werden kann. Zugleich können Inhalte, Rechte und Rollen sowie lokale Einstellungen komplett individuell und losgelöst von anderen Seiten angepasst werden. Ein anderer Ansatz ist sicher das Remote Entity Konzept, was jedoch aus unserer Erfahrung etwas fragiler und zugleich komplexer ist. Bisher haben wir dieses Konzept durch einige Einschränkungen nicht Live in Betrieb.

Nun möchte ich aus unserer Erfahrung heraus einige Möglichkeiten aufzeigen, um zumindest einige dieser Anforderungen an einen Content-Pool mit Drupal umzusetzen.


Das Deploy Modul


Mit dem Deploy Modul lassen sich Deployment Szenarien für Content umsetzen. Das Ziel des Deploy Moduls ist es, dass Redakteure Inhalte auf einem Testsystem erstellen und dort testen können. Nach erfolgreichem Test sollen dann die Inhalte auf dem Live-System veröffentlich werden. Das Deploy Modul unterstützt sogar das Auflösen von referenzierten Inhalten. Eine Synchronisation und eine Steuerung der Synchronisation auf Feldebene ist damit nicht möglich. Folgende zwei Videos verschaffen einen kurzen und einen detaillierten Einblick.


Kurz: Deploy Modul Demo


Detailliert: Enterprise content staging with deploy (DrupalCon)

 


Domain Access


Durch den Einsatz des Domain-Access Moduls kann man den gleichen Effekt, Inhalte über mehrere Seiten und Domains hinweg zu verteilen, erreichen. Die Architektur ist jedoch eine andere. Während in unserem Drupal Content-Pool Szenario beliebig viele Seiten mit Webservices verbunden und über verschiedene Domains erreichbar sind, liegt der gesamte Content in einer Installation, wenn man das Domain Access Modul einsetzen möchte. Inhalte werden dann über verschiedene Domains freigegeben. Das macht die Architektur sehr einfach, die Verwaltung bei viel Content und vielen Instanzen jedoch sehr komplex. Dennoch eine Lösung, die bei wenigen Domains schnell zum Erfolg führt, wenn es darum geht, Inhalte über ausgewählte Domains wieder zu verwenden.


Individuelle Webservices


Eine flexiblere Alternative, die jedoch mit mehr Aufwand verbunden ist, ist die Umsetzung über REST Services auf der Basis des JSON API Moduls. In Kombination mit Rules oder Custom Code zur Steuerung der Synchronisationslogik ist es möglich, alle zuvor beschriebenen Anforderungen abzubilden, wenn auch teilweise mit nicht unerheblichem Aufwand in der Entwicklung als auch im Betrieb.


Umsetzung mit NodeJS


Für Seiten mit einer überschaubaren Anzahl an Content ist die Umsetzung mit den zuvor genannten Drupal Modulen ohne Probleme möglich. Bei Installationen mit über 1000 Nodes (was keine große Menge ist) wird jedoch gerade das Synchronisieren von Content eine Herausforderung an die Performance, wenn jeder Inhalt kontinuierlich auf Änderungen hin verglichen werden muss.

In unseren letzten beiden Projekten mit den Szenarien 1-7 haben wir uns eines eigenen NodeJS Backends bedient. Dieses Backend namens Drupal Content Sync. stellt den Content-Pool inkl. der zu synchronisierenden Datenstrukturen und der nötigen REST Services bereit. Es verwaltet auch die gesamte Logik zum Synchronisieren und verteilt die Inhalte an weitere Instanzen. Dadurch erreichen wir eine deutlich bessere Performance dank NodeJS, noch höhere Flexibilität durch individuelles Mapping von Feldern und durch die Entkopplung eine Unabhängigkeit von Veränderungen in Drupal. Die Integration externer Services wie Google Calendar, Outlook, JIRA etc. kann ebenfalls per Konfiguration hinzugefügt werden.

In der Gallerie unten sehen Sie Screenshots von unserem Tool. Sollten Sie Interesse daran haben, sich die Funktionen einmal anzusehen, laden wir Sie gerne zu einer persönlichen Demo ein. Nehmen Sie gerne Kontakt zu uns auf. Mein Team und ich stehen Ihnen auch gerne bei Rückfragen zum Thema Content-Pool zur Verfügung.

Registrieren Sie sich jetzt für unseren kostenlosen Newsletter und bleiben Sie immer auf dem Laufenden

Weitere Blogbeiträge