---
title: "CMS-Seiten (CLI)"
description: "Erstellen und Löschen von CMS-Seiten über die Befehlszeile."
---

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.

## Seite erstellen
```bash
./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.

## Seite löschen
```bash
./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

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.

## Ohne das CMS-Modul

`-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:
```bash
./nibiru -m cms
./nibiru -mi local
```
(Siehe [Module](/core/modules/) für die Funktionalität von `./nibiru -m` und die Migrationsdateien, die das `cms`-Modul mitbringt.)

## Inhalte nach der Erstellung bearbeiten

Die Befehlszeilenschnittstelle (CLI) bearbeitet keinen Text – dies ist absichtlich der Web-Benutzeroberfläche des CMS-Moduls überlassen worden. Aus dem Produktionscode:
```php
// 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.
