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
| Variable | Bedeutung |
|---|---|
$page | aktuell betrachtete Seite |
$content | veröffentlichte Inhalte für die aktuelle Liste |
$staticContent | statische Seiten |
$pages | Pages-Datenbankobjekt |
$categories | Kategorie-Datenbank |
$tags | Tag-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.