---
title: "CMSページ（CLI）"
description: "コマンドラインからCMSページを作成および削除します。"
---

`cms` モジュールがインストールされると、Nibiru CLI に2つの追加フラグが得られ、CMSページを直接管理するためのものです。これは、コードを触れずにエディターがサイトコピーを更新する生産用ECサイト `prod.maschinen-stockert.de` を動かしている同じコンテンツストアです。

## ページを作成する
```bash
./nibiru -new-cms-page about-us
```
この文を翻訳します。

1. `cms_pages` テーブルにスラッグが `about-us` の行を挿入します。
2. ページを CMS テンプレート（設定されていない場合はデフォルトテンプレート）にバインドします。
3. エディターがサポートされているすべての言語でコピーを記入できるように、`cms_template_texts` に言語ごとのプレースホルダーラインを作成します。

`/cms/about-us`（または設定したCMSプレフィックス）にアクセスすると、新しいページが公開されています。

## ページを削除する
```bash
./nibiru -delete-cms-page about-us
```
ページ行と関連する `cms_template_texts` エントリを削除します。CMS テンプレート自体は削除されません——ページがテンプレートにバインドされている部分のみ削除されます。

## なぜこれらのコマンドがSQLではなくCLIであるのか

二つの理由：

1. **アトミック性** — ページを作成するには、2つのテーブル（ページとそのテキスト行）への挿入が必要です。CLIはこれをトランザクションでラップします。
2. **スラッグの一意性** — CLIは挿入前に衝突をチェックし、SQL制約違反よりもフレンドリーなエラーを表示します。

## CMSモジュールなし

`-new-cms-page` and `-delete-cms-page` exit non-zero with a clear error message if the `cms` module isn't installed. Add it with:
```bash
./nibiru -m cms
./nibiru -mi local
```
（[モジュール](/core/modules/) を参照して、`./nibiru -m` が何を行うかと、`cms` モジュールが提供するマイグレーションファイルについて確認してください。）

## 作成後コンテンツの編集

The CLI doesn't edit text — that's deliberately left to the CMS module's web UI. From production code:
```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']
    ]);
}
```
結果：テンプレート内のすべての `{$identifier}` は現在の言語のコンテンツで自動的に埋められます。非開発者は管理UIを介してテキストを管理し、開発者はテンプレートを介してレイアウトを管理します。
