コンテンツにスキップ
Nibiru docsv0.9.2

CMSページ(CLI)

コマンドラインからCMSページを作成および削除します。

Stable Reading time ~ 1 min Edit on GitHub

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

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

この文を翻訳します。

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

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

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

ページ行と関連する cms_template_texts エントリを削除します。CMS テンプレート自体は削除されません——ページがテンプレートにバインドされている部分のみ削除されます。

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

Section titled “なぜこれらのコマンドがSQLではなくCLIであるのか”

二つの理由:

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

-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:

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

モジュール を参照して、./nibiru -m が何を行うかと、cms モジュールが提供するマイグレーションファイルについて確認してください。)

The CLI doesn’t edit text — that’s deliberately left to the CMS module’s web UI. From production code:

// 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を介してテキストを管理し、開発者はテンプレートを介してレイアウトを管理します。