コンテンツステージング.

Learn DXPR BuilderManage the siteNaar productie

コンテンツステージングとは、訪問者が見る前にDXPR Builderページを構築・レビューすることです。方法は2つあります。コンテンツを本番に移動する別のステージングサイトを使う方法と、1サイトでDrupalのリビジョンとContent Moderationを使う方法です。このページでは両方を扱い、Builderの保存がリビジョンとモデレーション状態に何をするか正確に説明します。それがどちらの方式が合うかを決めるからです。

Builderの保存動作

エディターからの保存は毎回以下の手順を実行します。

  1. ページのdefault revisionを編集中の言語で読み込みます。
  2. 現在の利用者がページを更新できるか確認します。
  3. 新しいHTMLをフィールドに書き込みます。
  4. エンティティタイプにリビジョンがある場合、新しいリビジョンを作成してdefault revisionにします。現在の利用者がその作成者となり、ログメッセージSaved with DXPR builderとリクエスト時刻が付きます。
  5. そのページとリビジョンの編集ロックを外し、ページを保存します。

保存の背後にあるリクエストはAPIエンドポイントで説明します。

ノードやDrag and Drop Blockでの保存は毎回新しいリビジョンを作ります。コンテンツタイプでCreate new revisionにチェックがあってもなくてもです。Revisionsタブは各保存をBuilderのログメッセージ付きで列挙します。Drushのdxb:page:updateでもリビジョンが作られます。ログメッセージUpdated via dxb:page:update Drush command.

Builderにはモデレーション状態のコントロールがなく、moderation_stateを設定しません。コンテンツタイプでContent Moderationが有効な場合、新しいリビジョンはBuilderが読み込んだリビジョンの状態を保ち、Content Moderationは保存時にその状態のルールを適用します。

  • 公開済みページは公開のままで、新しいリビジョンは即時に公開されます。
  • 下書きの未公開ページは下書きのままです。
  • 公開済みのdefault revisionと新しい保留中の下書きがあるページは問題です。Builderは下書きではなく公開済みリビジョンを読み込むため、保存では公開済みコンテンツから新しい公開済みリビジョンが作られ、下書きの変更は脇に置かれます。

状態の変更はノード編集フォームを使います。1サイト内のレビュー過程では、編集者がBuilderで作業中はページを未公開(下書き)のままにし、レビュー完了後にフォームから公開します。

ステージングサイトのワークフロー

別のステージングサイトでは上記のモデレーション制限を避けられ、関係者が実際のページをレビューできます。

  1. 編集者はステージングサイトでページを構築・変更します。
  2. レビュー担当者はそこで承認します。
  3. 承認済みコンテンツを以下のいずれかの方法で本番に移動します。
  4. 本番のページを匿名訪問者として確認します。

データベースコピー

データベース全体をステージングから本番にコピーします。

drush sql:sync @staging @production

本番の全コンテンツを置換するため、事前に本番をバックアップし、コピー後に本番で行った変更は失われるものと想定します。ファイルは含まれません。以下で説明する通り同期します。

選択的コンテンツエクスポート

個別のページを移動するには、Default Contentのようなモジュールでノードをエクスポートします。ページが参照するメディアとファイルを含め、本番でインポートします。BuilderはHTMLをテキストフィールドに保存するため、フィールド値はノードと一緒に移動します。HTML内の画像パスはsites/default/files/dxpr_builder_imagesを指すため、そのファイルもコピーします。

設定のみのデプロイ

作ったものが特定のページではなく再利用可能なレイアウトの場合の手順です。

  1. ステージングでコンテナバーのMore > Save as templateでレイアウトを保存します。利用者テンプレートが作られます。

  2. 移動するのはDXPR Studio > DXPR Builder > User Templatesで、そのテンプレートの操作でCreate page templateを選びます。

  3. 設定をエクスポートします。

    drush config:export
    
  4. デプロイするのはdxpr_builder.page_template.*.ymlファイルで、本番でインポートします。

    drush config:import
    
  5. 編集者は本番でテンプレートから新しいページを始めます。ページテンプレートは空のコンテナに表示されます。

ファイル同期

Builderからのアップロードはサイトの既定ファイルディレクトリ内のdxpr_builder_images、dxpr_builder_videos、dxpr_builder_filesに入ります。コンテンツと一緒に同期します。

rsync -avz staging:/path/to/files/ production:/path/to/files/

両環境にマウントしたS3のような共有ファイルストアではこの手順が不要です。

リビジョンとロールバック

保存のたびにリビジョンができるため、ロールバックはDrupalの操作です。

  1. ページのRevisionsタブを開きます。
  2. 不要な保存の前のリビジョンを探します。Builderの各保存にはSaved with DXPR builderと表示されます。
  3. クリックするのはRevertです。

復元でも別のリビジョンができるため、履歴は保たれます。

編集ロック

編集者が最初にコンテナ内をクリックすると、エディターはdxpr_toggle_content_lockリクエストを/dxpr_builder/ajaxに送り、dxpr_lockテーブルがエンティティ、リビジョン、言語、利用者を記録します。別の編集者がページを開くと、エディターはdxpr_content_lock_statusを問い合わせ、コンテナコントロールを隠してロック保持者名付きのLockedボタンを表示します。保存でその行は削除されます。別のエディターはLockedをクリックして確認することでロックを上書きでき、それ以降は最後の保存が有効になります。

次のステップ