Dateistruktur
Jedes WBCE-Modul lebt in einem eigenen Unterverzeichnis unter /modules/. Die Dateistruktur hängt vom Modultyp ab — aber einige Dateien sind immer Pflicht.
Pflichtdateien (alle Modultypen)
mein_modul/
├── info.php ← Name, Version, Typ, Beschreibung
├── install.php ← Datenbank anlegen, Verzeichnisse erstellen
├── uninstall.php ← Datenbank löschen, aufräumen
└── index.php ← Directory-Schutz
Seitenmodul (page)
mein_modul/
├── info.php
├── install.php uninstall.php upgrade.php
├── add.php ← Standardwerte beim Anlegen eines Abschnitts
├── view.php ← Frontend-Ausgabe
├── modify.php ← Backend-Formular
├── save.php ← Eingaben speichern
├── index.php
├── languages/
│ ├── DE.php
│ ├── EN.php
│ └── index.php
├── css/
│ ├── frontend.css
│ ├── backend.css
│ └── index.php
└── js/
├── backend.js
└── index.php
Admin-Tool (tool)
mein_tool/
├── info.php
├── install.php uninstall.php upgrade.php
├── tool.php ← Backend-Ausgabe im Admin-Bereich
├── index.php
├── languages/
│ └── DE.php
├── css/
│ ├── backend.css
│ └── index.php
└── js/
├── backend.js
└── index.php
Snippet
mein_snippet/
├── info.php
├── install.php uninstall.php
├── index.php
└── code/
└── mein_snippet.php ← Wird per Droplet aufgerufen
Directory-Schutz (index.php)
Jedes Unterverzeichnis braucht eine index.php die direkten Zugriff verhindert:
<?php header('Location: ../../'); exit;
Tiefe anpassen:
Modulroot: ../
Unterordner: ../../
upgrade.php
Die upgrade.php wird beim Update auf eine neuere Version ausgeführt. Hier werden neue Datenbankspalten ergänzt oder Daten migriert.
<?php
defined('WB_PATH') or die("This file cannot be accessed directly!");
// Neue Spalte ergänzen falls nicht vorhanden
if (!$database->fieldExists(TABLE_PREFIX.'mod_mein_modul', 'neue_spalte')) {
$database->addField(TABLE_PREFIX.'mod_mein_modul', 'neue_spalte',
'VARCHAR(255) NOT NULL DEFAULT \'\'');
}
Wichtig: Kein UPDATE der addons-Tabelle in install.php
Manche älteren Beispiele enthalten in install.php:
// ❌ FALSCH — funktioniert nicht!
$database->query("UPDATE `{TP}addons` SET `function` = 'tool,snippet' ...");
Das schlägt fehl weil WBCE den Datensatz in der addons-Tabelle erst nach install.php schreibt.
// ✅ RICHTIG — einfach in info.php setzen:
$module_function = 'page,tool,snippet';
// WBCE liest das direkt und schreibt es selbst in die addons-Tabelle
Nächster Schritt: Modultypen — page, tool, snippet und Kombinationen