---
title: "Pages du CMS (CLI)"
description: "Créez et supprimez des pages CMS à partir de la ligne de commande."
---

Lorsque le module `cms` est installé, l'interface de ligne de commande Nibiru gagne deux drapeaux supplémentaires pour gérer les pages du CMS directement. C'est le même magasin de contenu qui alimente le site e-commerce de production `prod.maschinen-stockert.de`, où les rédacteurs mettent à jour le contenu du site sans toucher au code.

## Créer une page
```bash
./nibiru -new-cms-page about-us
```
Ceci :

1. Insère une ligne dans la table `cms_pages` avec le slug `about-us`.
2. Lie la page à un modèle CMS (le modèle par défaut, sauf si un autre est configuré).
3. Crée des lignes de placeholder par langue dans `cms_template_texts` afin que les éditeurs puissent remplir le contenu pour chaque langue prise en charge.

Visitez `/cms/about-us` (ou votre préfixe de CMS configuré) et la nouvelle page est en ligne.

## Supprimer une page
```bash
./nibiru -delete-cms-page about-us
```
Supprime la ligne de page et ses entrées associées `cms_template_texts`. Le modèle de CMS lui-même n'est pas supprimé — seul le lien de la page avec celui-ci est effacé.

## Pourquoi ces commandes sont-elles des commandes CLI et non simplement du SQL

Deux raisons :

1. **Atomicité** — la création d'une page nécessite des insertions dans deux tables (la page et ses lignes de texte). L'interface en ligne de commande (CLI) encapsule cela dans une transaction.
2. **Unicité du slug** — l'interface en ligne de commande (CLI) vérifie les collisions avant l'insertion et fournit une erreur plus conviviale qu'une violation de contrainte SQL.

## Sans le module CMS

`-new-cms-page` et `-delete-cms-page` quittent avec un code d'erreur non nul et un message d'erreur clair si le module `cms` n'est pas installé. Ajoutez-le avec :
```bash
./nibiru -m cms
./nibiru -mi local
```
(Voir [Modules](/core/modules/) pour ce que fait `./nibiru -m` et les fichiers de migration que le module `cms` fournit.)

## Édition du contenu après sa création

La CLI ne modifie pas le texte — c'est délibérément laissé à l'interface utilisateur web du module CMS. À partir du code de production :
```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']
    ]);
}
```
Le résultat : chaque `{$identifier}` dans le modèle est automatiquement rempli avec le contenu de la langue actuelle. Les non-développeurs gèrent le texte via l'interface d'administration ; les développeurs gèrent la disposition via le modèle.
