---
title: "Páginas del CMS (CLI)"
description: "Crear y eliminar páginas del CMS desde la línea de comandos."
---

Cuando se instala el módulo `cms`, la CLI de Nibiru obtiene dos banderas adicionales para gestionar las páginas del CMS directamente. Este es el mismo almacén de contenido que alimenta el sitio web de comercio electrónico de producción `prod.maschinen-stockert.de`, donde los editores actualizan el contenido del sitio sin tocar código.

## Crear una página
```bash
./nibiru -new-cms-page about-us
```
Eso:

1. Inserta una fila en la tabla `cms_pages` con el slug `about-us`.
2. Asocia la página a una plantilla de CMS (la plantilla predeterminada, a menos que se configure otra).
3. Crea filas de marcadores de posición por idioma en `cms_template_texts` para que los editores puedan completar el contenido en cada idioma soportado.

Visita `/cms/about-us` (o tu prefijo de CMS configurado) y la nueva página está en vivo.

## Eliminar una página
```bash
./nibiru -delete-cms-page about-us
```
Elimina la fila de la página y sus entradas asociadas `cms_template_texts`. La plantilla del CMS en sí misma no se elimina — solo el enlace de la página a ella.

## ¿Por qué son estos comandos CLI y no solo SQL?

Dos razones:

1. **Atomicidad** — crear una página requiere inserciones en dos tablas (la página y sus filas de texto). La CLI envuelve esto en una transacción.
2. **Unicidad del slug** — la CLI verifica colisiones antes de insertar y proporciona un error más amigable que una violación de restricción SQL.

## Sin el módulo del CMS

`-new-cms-page` y `-delete-cms-page` salen con un código de error no cero y un mensaje de error claro si el módulo `cms` no está instalado. Agrégalo con:
```bash
./nibiru -m cms
./nibiru -mi local
```
(Consulte [Módulos](/core/modules/) para saber qué hace `./nibiru -m` y los archivos de migración que incluye el módulo `cms`).

## Edición de contenido después de la creación

La CLI no edita texto — eso está deliberadamente dejado para la interfaz web del módulo CMS. Desde el código de producción:
```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']
    ]);
}
```
El resultado: cada `{$identifier}` en la plantilla se autocompleta con el contenido del idioma actual. Los no desarrolladores gestionan el texto a través de la interfaz de administración; los desarrolladores gestionan el diseño a través de la plantilla.
