Technischer Aufbau


Jedes Modul enthält eine PHP-Datei mit dem gleichen Namen des Verzeichnisses. Alle weiteren Moduldateien befinden sich sortiert nach Typ im /lib/-Unterordner.

Ein minimales Modul benötigt mindestens die PHP-Datei mit der Modulklasse zur Initialisierung.

SV100 Architektur

Modul-Struktur

/css/common/

In diesem Verzeichnis befinden sich alle statischen CSS-Dateien.

Die default.css existiert nur bei Modulen für Gutenberg Blöcken. Hier speichern und ggf. ändern wir das Default-CSS der von WordPress und dem Gutenberg-Plugin mitgelieferten Gutenberg-Blöcke.

Die common.css enthält die von unserem Theme ergänzend zur default.css notwendigen Styleangaben.

Zusätzlich können weitere CSS-Dateien in dem Ordner vorhanden sein, beispielsweise für Teilbereiche des Moduls, um diese gegebenenfalls nur bei Bedarf zu laden.

CSS-Dateien für Block Styles haben stets das Präfix style_.

Ist der CSS-Cache für ein Modul aktiv, wird vorausgesetzt, dass die default.css und common.css existieren, selbst wenn diese leer sind. Aus Performancegründen erfolgt keine file_exists-Prüfung.

/css/config/

In diesem Verzeichnis befinden sich alle dynamischen CSS-Dateien.

Die init.php enthält einen oder mehrere includes, damit die PHP-Dateien leichter zu bearbeiten sind, beispielsweise für verschiedene Elemente eines Moduls.

Es existiert mindestens eine general.php, in welcher der eigentliche CSS-Code generiert wird.

Ist der CSS-Cache für ein Modul aktiv, wird vorausgesetzt, dass die init.php existiert, selbst wenn diese leer ist. Aus Performancegründen erfolgt keine file_exists-Prüfung.

/js/backend/

In diesem Verzeichnis befinden sich alle JS-Dateien für das Backend, also beispielsweise WP-Admin oder den Block-Editor.

Die init.js und block_extra_styles.js sind optional und werden geladen, sobald die Datei existiert und nicht leer ist. Werden weitere JS-Dateien benötigt, müssen diese im Modul registriert und eingereiht werden.

Die block_extra_styles.js registriert Extra Styles für Gutenberg-Blöcke.

Die init.js lädt im Backend, derzeit auf den folgenden Adminseiten:

  • Setting-Seiten von SV100 und straightvisions-Plugins
  • Beitragsbearbeitung
  • Kategoriebearbeitung
  • Widgetbearbeitung

/js/frontend/

In diesem Verzeichnis befinden sich alle JS-Dateien für das Frontend.

Die init.js ist optional und nur beispielhaft, hier können beliebige Javascript-Dateien, die für die Frontendausgabe benötigt werden gespeichert werden.

Jede Frontend-JS-Datei muss registriert und eingereiht werden, damit diese im Frontend geladen wird.

/tpl/frontend/

Bietet das Modul eine Ausgabe im Frontend, befindet sich der entsprechende Code zumeist in der default.php.

In der Regel geschieht die Ausgabe on Demand, also nur wenn die Inhalte für die aktuell aufgerufene Seite auch benötigt werden.

In Templatedateien selbst werden generell keine CSS- oder JS-Dateien eingereiht oder eingebettet.

/tpl/settings/

Werden für ein Modul Settings und eine Section definiert, wird automatisch eine Settings-Seite generiert.

Das Verzeichnis ist daher optional und wird nur geladen, sofern das Modul die Methode set_section_template_path() aufruft.

Wird die genannte Methode im Modul aufgerufen, wird die init.php im settings-Verzeichnis aufgerufen, in der ein individuelles Settingslayout festgelegt werden kann.

Die init.php sollte selbst keine Settings beinhalten, sondern bildet einen Wrapper für die einzelnen Tabs, die inkludiert werden, beginnend mit der general.php für die generellen Modul-Settings.

Falls nötig können weitere optionale Unterverzeichnisse, wie /img/ vorhanden sein.