Zum Inhalt springen
Nibiru docsv0.9.2

CMS-Seiten (CLI)

Erstellen und Löschen von CMS-Seiten über die Befehlszeile.

Stable Reading time ~ 1 min Edit on GitHub

Wenn das cms-Modul installiert ist, erhält die Nibiru CLI zwei zusätzliche Flags für die direkte Verwaltung von CMS-Seiten. Dies ist der gleiche Inhaltsspeicher, der den Produktions-E-Commerce-Site prod.maschinen-stockert.de betreibt, wo Redakteure Site-Copy aktualisieren können, ohne Code zu berühren.

Terminal-Fenster
./nibiru -new-cms-page about-us

Dies:

  1. Fügt eine Zeile in die Tabelle cms_pages mit dem Slug about-us ein.
  2. Bindet die Seite an eine CMS-Vorlage (die Standardvorlage, es sei denn, eine andere ist konfiguriert).
  3. Erstellt pro Sprache Platzhalterzeilen in der Tabelle cms_template_texts, sodass Redakteure Texte in jeder unterstützten Sprache eingeben können.

Besuchen Sie /cms/about-us (oder Ihren konfigurierten CMS-Prefix) und die neue Seite ist aktiv.

Terminal-Fenster
./nibiru -delete-cms-page about-us

Entfernt die Seitenzeile und ihre zugehörigen cms_template_texts Einträge. Die eigentliche CMS-Vorlage wird nicht gelöscht – nur die Verknüpfung der Seite mit ihr.

Warum diese Befehle CLI-Befehle und nicht einfach SQL sind

Abschnitt betitelt „Warum diese Befehle CLI-Befehle und nicht einfach SQL sind“

Zwei Gründe:

  1. Atomarität — die Erstellung einer Seite erfordert Einfügungen in zwei Tabellen (die Seite und ihre Textzeilen). Die CLI verpackt dies in eine Transaktion.
  2. Eindeutigkeit des Slugs — die CLI überprüft vor der Einfügung auf Kollisionen und gibt einen freundlicheren Fehler als eine Verletzung einer SQL-Einschränkung.

-new-cms-page und -delete-cms-page beenden mit einem nicht-nulligen Exit-Code und einer klaren Fehlermeldung, wenn das Modul cms nicht installiert ist. Fügen Sie es mit folgendem Befehl hinzu:

Terminal-Fenster
./nibiru -m cms
./nibiru -mi local

(Siehe Module für die Funktionalität von ./nibiru -m und die Migrationsdateien, die das cms-Modul mitbringt.)

Die Befehlszeilenschnittstelle (CLI) bearbeitet keinen Text – dies ist absichtlich der Web-Benutzeroberfläche des CMS-Moduls überlassen worden. Aus dem Produktionscode:

// Read all text identifiers for a controller path + language
$texts = \Nibiru\Module\Cms\Cms::init('about-us')
->loadCmsTemplateTextsByControllerPath('about-us/page', $this->language);
foreach ($texts as $t) {
\Nibiru\View::assign([
$t['cms_template_texts_text_identifier']
=> $t['cms_template_texts_text_content']
]);
}

Das Ergebnis: Jede {$identifier} im Template wird automatisch mit dem Inhalt der aktuellen Sprache aufgefüllt. Nicht-Entwickler verwalten den Text über die Admin-Oberfläche; Entwickler verwalten das Layout über das Template.