Plugins

Bludit-Plugins mit Einstellungen: dbFields, form(), post() und Flat-File-Speicher

So bekommt ein Plugin konfigurierbare Felder, persistente Werte und einen eigenen Workspace.

Sobald ein Plugin konfigurierbar werden soll, kommt Bludits Plugin-Datenbank ins Spiel. Die Basisklasse legt pro Plugin eine kleine Flat-File-Datenbank unter bl-content/databases/plugins/ an. Dafür definierst du Felder in init(), renderst Einstellungen in form() und speicherst sie in post().

dbFields definieren

public function init()
{
    $this->dbFields = array(
        'headline' => 'Hallo',
        'enabled' => true,
        'limit' => 5
    );
}

Formular ausgeben

public function form()
{
    $headline = htmlspecialchars($this->getValue('headline'), ENT_QUOTES, 'UTF-8');
    $checked = $this->getValue('enabled') ? 'checked' : '';
    return '<label>Überschrift</label>'
        .'<input name="headline" value="'.$headline.'">'
        .'<label><input type="checkbox" name="enabled" value="1" '.$checked.'> Aktiv</label>';
}

Die Konfigurationsseite selbst, inklusive CSRF-Token und Speichern/Abbrechen-Buttons, stellt Bludit bereit. Dein form() liefert nur die Felder im Formularinneren.

Werte speichern

public function post()
{
    $this->db['headline'] = isset($_POST['headline']) ? trim($_POST['headline']) : '';
    $this->db['enabled'] = isset($_POST['enabled']);
    return $this->save();
}

Typen bewusst behandeln

Checkboxen fehlen im POST vollständig, wenn sie nicht markiert sind. Zahlen solltest du explizit in Integer umwandeln und begrenzen. Text, der später in HTML ausgegeben wird, muss beim Rendern kontextgerecht escaped werden. Verlasse dich nicht darauf, dass ein Wert „aus dem Admin kommt“ und deshalb automatisch sicher ist.

Workspace statt Datenbankfeld

Für größere Dateien, Cache oder importierte Datensätze ist der Plugin-Workspace besser geeignet als ein riesiges JSON-Feld. $this->workspace() zeigt in einen eigenen Ordner unter bl-content/workspaces/. Beim Deinstallieren kann Bludit diesen Bereich aufräumen.

Quellen und weiterführende Dokumentation