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