Mit dem Multisites-Modul lassen sich beliebig viele Seiten mit einem einzigen Zikula-System betreiben. Mit Vorlagen, die im Prinzip SQL-Dumps repräsentieren, können neue Seiten auf Knopfdruck erstellt werden. Jede Seitenvorlage beinhaltet damit die vorab definierten Strukturen und -daten out of the box.
Jede Internetseite verfügt (aus Gründen der Architektur und der Skalierbarkeit) über eine eigene Datenbank. Es ist auch möglich, dass mehrere Internetseiten mit der gleichen Datenbank arbeiten. Dies erfordert jedoch entsprechende Anpassungen in den verwendeten Themes.
Mittlerweile nutzen wir das Multisites-Modul seit mehreren Jahren aktiv. Im Laufe solch einer Zeitspanne fallen natürlich auch Defizite auf, so dass sich einige Bugs und Feature Requests angesammelt haben. Daher haben wir beschlossen, eine neue Major-Version mit ModuleStudio zu entwickeln. Diese Version 2 wird das Modul nicht nur wartungsfreundlicher und so robuster für die Zukunft machen, sondern auch einige neue Funktionen mitbringen. Dieser Beitrag dient als Appetitmacher und stellt einige Highlights vor.
Vor einiger Zeit habe ich die wichtigsten Ideen in den Issue Tracker des Projektes eingetragen. Um etwas Struktur hinein zu bekommen, habe ich ferner die zwei Meilensteine 2.0.0 und 2.1.0 angelegt.
Da eine Vorlage nicht nur die Systemdaten enthalten muss, sondern auch beliebige Inhalte, wie etwa Inhaltsseiten, News-Artikel, Benutzerberechtigungen und Vieles mehr, mitbringen kann, wollen wir diese Möglichkeiten zukünftig stärker nutzen. Dies bedingt jedoch eine Erweiterung der internen Funktionsweise, die bestimmt, wie eine Seitenvorlage auf eine Datenbank angewendet wird.
Im Juni hatte ich den aktuellen Stand des Moduls bereits nachmodelliert. Heute morgen habe ich dann das Modell erweitert, um auch neue Anforderungen und Funktionen zu berücksichtigen. Das Modell und eine knappe Zusammenfassung der Neuerungen können im übergeordneten Ticket für die Version 2 angeschaut werden. Damit kann die Arbeit an dem eigentlichen Modul bald losgehen.
Natürlich müssen zunächst einmal die bestehenden Funktionen neu integriert werden, so dass das neue Modul das jetzige prinzipiell ersetzen könnte. Daneben sind unter anderem die folgenden Neuerungen für die Version 2.0.0 vorgesehen:
- Vorlagen und Seiten können in Projekten gruppiert und organisiert werden. Eine Vorlage kann entweder für alle oder nur für bestimmte Projekte zur Verfügung stehen. Dies erleichtert die Verwaltung bei größeren Projekten, in denen eine Vielzahl von Seiten oder ein komplettes Portalnetzwerk erstellt wird. In der Seitenübersicht wird es auch eine Suchfunktion geben, um schnell eine bestimmte Seite finden zu können.
- Eine neue Funktion soll dafür sorgen, dass eine bestehende Datenbank direkt exportiert und als neue Vorlage zur Verfügung gestellt werden kann.
- Vorlagen werden parametrisierbar: jeder Parameter steht dabei für einen variablen Platzhalter. Jede Seite, die auf der Vorlage basiert, muss entsprechende Werte für diese Parameter bereitstellen - entweder über das Hochladen einer CSV-Datei (so dass die Parameter je Seite in Excel gepflegt werden können) oder über händische Erfassung via Formular. Beim Anlegen der Seite werden dann die Platzhalter durch die entsprechenden Werte ersetzt.
- Eine Vorlage, die aktualisiert wurde, soll neu angewendet werden können. Dabei werden alle darauf basierenden Seiten neu erstellt.
- Es wird möglich sein, eine Seite von ihrer Vorlage zu lösen. Damit wird diese Seite bei einem erneutem Anwenden der Vorlage außen vor gelassen. Die Seite kann bei Bedarf jederzeit wieder einer Vorlage zugeordnet werden.
- Jede Seite soll optional nur bestimmte Sprachen erlauben. Im Moment ist es so, dass alle multilingualen Seiten automatisch alle im System installierten Locales verwenden. Bei größeren Portalnetzwerken möchte man dies oftmals steuern bzw. einschränken können. Hierzu muss wahrscheinlich auch der Zikula Core angepasst werden.
- Eine Expertenfunktion soll es ermöglichen, SQL-Kommandos automatisch in allen (oder ausgewählten) Datenbanken anzuwenden.
- Schließlich soll eine Dokumentation erstellt werden, um die Nutzung des Moduls zu vereinfachen.
Je nachdem, wie schnell die Arbeiten voranschreiten, ist es auch möglich, dass wir das ein oder andere Ticket aus 2.1.0 bereits in 2.0.0 erledigen. Vermutlich sind dort jedoch auch einige Punkte darunter, die ebenfalls einer Core-Anpassung bedürfen. Daher betrachte ich das erst einmal als Prio B. Wichtiger wird da vermutlich vorher eine Migrationsmöglichkeit, um das alte Modul auch in der Praxis ablösen zu können.