Plugins

Bludit-Seiten in Plugins lesen und verändern: Page-Objekt, $content, Kategorien und Lifecycle

Praxisguide für Inhalte, Page-Objekte, Kategorien und Seiten-Hooks.

Für Plugins ist eine Seite nicht nur HTML. Bludit stellt Page-Objekte und Datenbankobjekte bereit. Damit kann ein Plugin Inhalte lesen, Felder ändern, Kategorien auswerten oder nach Create/Modify/Delete reagieren.

Die wichtigsten globalen Objekte

VariableBedeutung
$pageaktuell betrachtete Seite
$contentveröffentlichte Inhalte für die aktuelle Liste
$staticContentstatische Seiten
$pagesPages-Datenbankobjekt
$categoriesKategorie-Datenbank
$tagsTag-Datenbank

Laufzeit-Inhalt ersetzen

public function beforeSiteLoad()
{
    global $content;
    foreach ($content as $page) {
        $new = str_replace('[[hello]]', '<strong>Hello!</strong>', $page->contentRaw());
        $page->setField('content', $new);
    }
}

Nach Seitenerstellung reagieren

public function afterPageCreate($key)
{
    $page = new Page($key);
    Log::set('Neue Seite: '.$page->title());
}

Kategorien auslesen

foreach (getCategories() as $category) {
    echo $category->name();
    echo $category->permalink();
    echo count($category->pages());
}

Permanent oder nur zur Laufzeit?

Das ist eine zentrale Designfrage. setField() auf einem geladenen Page-Objekt verändert die Ausgabe dieser Anfrage. Wenn du den Inhalt auf Datenträger ändern willst, musst du die Pages-Datenbank über ihre Schreibmethoden ändern. Für Shortcodes, Filter und dynamische Einblendungen ist Laufzeit-Manipulation meist die bessere Wahl.

Quellen und weiterführende Dokumentation