Module programmieren

Über Module können zusätzliche Features in WBCE CMS integriert werden. Dabei wird zwischen verschiedenen Modularten unterschieden, deren Merkmale nachfolgend kurz beschrieben werden.

Seiten-Modul

Ein Seitenmodul dient, wie die Bezeichnung schon vermuten lässt, dazu, Inhalte auf einer Seite darzustellen, d.h. im Frontend bestimmte Ausgaben zu generieren (Bildergalerien, Formulare usw.). Im Normalfall können mehrere Seitenmodule auf einer Seite (siehe Abschnitte und Blöcke) erscheinen.  

Im Backend gibt der Benutzer dann die anzuzeigenden Daten ein (z.B. lädt er die Bilder, die in der Galerie erscheinen sollen, hoch oder definiert die anzuzeigenden Formular-Eingabefelder) und nimmt ggf. weitere Einstellungen vor, um die Darstellung im Frontend anzupassen. Dies ist idealerweise durch Setzen von Checkboxen, Auswählen von Vorgabewerten usw. möglich, sollte also keine oder nur geringe HTML-Kenntnisse erfordern.

WBCE CMS erwartet

  • eine Datei view.php im Modulverzeichnis für die anzuzeigenden Inhalte
  • eine Datei info.php mit der Angabe $module_function = 'page';
  • weitere Dateien  siehe helloworld-Modul
Admin-Tool

Ein Admin-Tool ist nicht in erster Linie für die Ausgabe von Inhalten im Frontend gedacht, sondern bietet Funktionen an, mit denen Administratoren und Benutzer grundlegende Eigenschaften der Website anpassen können oder den Funktionsumfang des Backends, z.B. hinsichtlich Benutzerverwaltung oder Seitenmanagement, erweitern können. (Natürlich gibt es viele Admin-Tools, die unmittelbaren Einfluss auf das Erscheinungsbild der Website haben können, z.B. wenn mit Hilfe des AFE die Vorlagen- und Moduldateien bearbeitet werden oder das Tool Cookie Consent zur Konfiguration/Anzeige des Cookie-Banners verwendet wird.)

Admin-Tools erscheinen nur im gleichnamigen Bereich des Backends, stehen also nicht im Neuanlagedialog für Seiten bzw. Abschnitte zur Auswahl. 

WBCE CMS erwartet

  • eine Datei tool.php im Modulverzeichnis für die im Backend anzuzeigenden Inhalte
  • eine Datei info.php mit der Angabe $module_function = 'tool';
  • index.php, install.php, uninstall.php  (das können auch leere Platzhalter-Dateien sein)

 

Snippet (Codeschnipsel)

Ein Snippet ist ein Codeschnipsel, das entweder automatisch auf jeder Seite geladen/ausgeführt wird und/oder im Template oder auf Seiten in einem Code/Code2-Abschnitt als (ggf. parametrisierte) PHP-Funktion aufgerufen werden kann, ansonsten aber nicht in Erscheinung tritt (also weder beim Neuanlegen von Seiten/Abschnitten als Inhaltsart zur Auswahl steht, noch unter Admin-Tools aufgeführt wird).

Beispiele für Snippets sind z.B. show_menu2 oder awesomesnippet.

WBCE CMS erwartet

  • eine Datei include.php im Modulverzeichnis für die anzuzeigenden Inhalte
  • eine Datei info.php mit der Angabe $module_function = 'snippet';
  • index.php, install.php, uninstall.php  (das können auch leere Platzhalter-Dateien sein)
Hybride Module

Ab WBCE 1.4.0 können Module gleichzeitig Seitenmodule, Snippets und Admin-Tools sein.

Wenn ein Modul als Admin-Tool Informationen anzeigen und zudem auch im Frontend Benutzerinteraktionen ermöglichen oder Inhalte anzeigen soll, erfordert dies

  • das Vorhandensein einer tool.php und view.php im Modulverzeichnis
  • die Angabe $module_function = 'page, tool'; in der info.php

Optional können zur Anzeige von je nach Verwendungszweck angepasster Modulbezeichnung und -beschreibung in der info.php neben den zwingend vorausgesetzten Variablen $module_name und $module_description auch $tool_name und $tool_description definiert werden.

Analoges gilt für die Kombination aus Seitenmodul und Snippet und Admin-Tool und Snippet.

Hybride Module sind z.B. Visitor Statistics (Admin-Tool & Seitenmodul) oder Cookie Consent 2 (Admin-Tool & Snippet).

Spezielle Modularten

Neben den vorgenannten Arten gibt es noch weitere Modularten für spezielle Anwendungsbereiche:

  • $module_function = 'WYSIWYG';
    WYSIWYG-Editor, der sich ins WYSIWYG-Modul einklinkt. Derzeit nur vom Modul CKEditor / CKEditor Developer Edition genutzt. Erwartet wird eine Datei include.php im Modulverzeichnis.
     
  • $module_function = 'preinit'; (experimentell)
    Modul, das sehr früh in das Rendern der Seiten eingreift und nahezu alle Konstanten und Variablen überschreiben kann. Wird derzeit vom Modul Errorlogger genutzt. Erwartet wird eine Datei preinit.php im Modulverzeichnis.
     
  • $module_function = 'initialize'; (experimentell)
    wie vor, wobei die Ausführung des Moduls zu einem etwas späteren Zeitpunkt erfolgt, d.h. einige Systemparameter schon gesetzt sind und genutzt werden können/müssen. Erwartet wird eine Datei initialize.php im Modulverzeichnis.

Auch hier ist die (sinnvolle) Kombination der Modultypen miteinander zu Hybridmodulen möglich.

 

Rechtlicher Hinweis

Die Inhalte dieses Kapitels basieren auf der "alten" Hilfe, die 2007-2010 vom "Website Baker Hilfe Projekt" von Christian Sommer, Michael Tenschert, Bernd Michna und Klaus Weitzel erstellt und unter der Bedingung einer Linksetzung zu  websitebaker.org unter  CC-BY-NC-ND 3.0 veröffentlicht wurde. Die  ausdrückliche Genehmigung zur Veröffentlichung und Anpassung der Inhalte von den federführenden Verfassern liegt vor.