DXPR Builder 1.x・2.xからの移行.

DXPR Builderを学ぶここから始める他のビルダーから移行

DXPR Builder 3.xは、1.xや2.xのどのリリースからもその場で更新できます。Composerがコードを入れ替え、drush updatedbがdxpr_builder.installの更新フックを実行して設定とコンテンツを変換します。このページではフックの内容、カスタムコードの変更点、結果の確認方法を説明します。リリース日はgitタグ由来です。以前のリリースをご覧ください。

バージョン履歴の概要

系列 Drupal 備考
7.x-1.x Drupal 7 Glazed Builderとして販売。後に改名。
1.x (8.x-1.x) Drupal 8と9 2020年5月の最初の1.xリリースからモジュールマシン名dxpr_builder。最終リリース1.8.8。
2.x Drupal 9.3から11 CKEditor 5、Keyモジュール対応、最初のAI機能。最終リリース2.8.1。
3.x Drupal 10.2と11 Bootstrap 5限定、Keyモジュール必須、コンテンツ移行、AIページ・画像生成。

マシン名は1.xから3.xで変わりません。Glazed時代のマークアップが残るコンテンツは、アップグレード前に1.xや2.xで移行します。3.xではGlazed名の書き換えがなくなりました(以下参照)。

始める前の要件

  • Drupal 10.2以降、またはDrupal 11(dxpr_builder.info.ymlのcore_version_requirement)。
  • Keyモジュール。3.xではハード依存です。drush updatedbで見つからなければdxpr_builder_update_9020()がインストールします。
  • DXPR Builder 2.0.0以降向けに発行されたプロダクトキー。dxpr_tierクレームのないキーは設定フォームが拒否します。
  • Bootstrap 5を提供するテーマ、またはBootstrap 5サイドロード選択肢。Bootstrap 3と4のサイドロードはなくなりました。

移行手順

  1. データベースとファイルをバックアップします。

    drush sql:dump --result-file=backup.sql
    
  2. Composerでコードを更新します。3.xは現在プレリリースのため、許可します。

    composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies
    
  3. 更新フックを実行し、キャッシュを再構築します。

    drush updatedb
    drush cache:rebuild
    

    いくつかの3.xフックはすべてのDXPR Builderフィールド値をバッチで処理します(以下参照)。大規模サイトでは数秒ではなく数分掛かります。

  4. 設定画面/admin/dxpr_studio/dxpr_builder/settingsを開き、Licenseセクションを確認します。更新9020の後はStorage methodがKey module、KeyがDXPR Builder JWT(dxpr_builder_jwt)です。

  5. 同じページのSideload Bootstrap filesを確認します。Bootstrap 3や4だったサイトはBootstrap 5になっています。

  6. 開くのは/admin/dxpr_studio/dxpr_builder/ai_settingsで、初期値オンの3つのAIトグルをオンのままにするか決めます。

  7. DXPR Builderを使うページを開き、描画と編集が正しいか確認します。

更新フックの内容

8005から8025のフックは1.xで出荷済みです。1.xサイトは8026以降のすべて、2.8.0や2.8.1サイトは8040と9014以降を実行します。関数名はdxpr_builder_update_NNNN()です。

2.xで追加(1.xからの場合に実行)

フック 内容
8026 中央のDXPR Builderユーザー保存を更新します。
8027 ライセンス情報ブロックとPeopleビューへの「DXPR Builder User」列を追加します。
8028 コンテンツロック用のdxpr_lockテーブルを作成します。
8029 ユーザーライセンスダッシュボードにライセンスブロックを追加します。
8030 「Bootstrap 3 Light」選択肢の削除後にBootstrap設定を切り替えます。
8031 無効状態でインストールされたライセンス情報ブロックを有効化します。
8032 ブロック済みユーザーをライセンス保存から取り除きます。
8033 初期化するのはdrm_last_contactです。
8034 インストールするのはdxpr_user_is_disavowedユーザーフィールドとavow/disavowユーザーアクションです。
8035 初期化するのはhide_reminders設定です。
8036 プロファイルのCKEditor 4ツールバーボタン名をCKEditor 5に移行します。
8037 高速読み込み画像向けの既定画像スタイルを追加します。
8038 Keyモジュール連携サービス登録のためキャッシュを消去します。
8039 不完全なimage_scale_and_crop設定の画像スタイルを修復します。
9007 作成するのはai_tone_of_voiceとai_agent_commandsの語彙で、既定ターム付きです。
9008 設定するのはai_enabledで、trueにして旧ai_page_enabledキーを取り除きます。
9009 対象はdrm_last_contactで、設定から状態に移します。
9010 キャッシュを消去します。
9011 全プロファイルでAI AssistantとAI Tone of Voiceボタンを有効化します。
9012 復元するのはai_page_enabledで、既定trueです。
9013 AI出力フィルターの既定値(ai_output_allowed_domains)を設定します。
9015 追加するのはai_image_enabledで、既定trueです。

3.xで追加(1.xや2.xからの場合に実行)

フック 内容
8040 正規化するのはbootstrapで、bs5にします。1(Bootstrap 3)とbs4値は書き換えられます。
9014 バッチ:コンテンツ内のOwl CarouselマークアップをBootstrapカルーセルに変換します(src/Migration/OwlCarouselMigration.php)。
9016 追加するのはai_user_model_selectionで、既定trueです。
9017 バッチ:circlifulサークルカウンターをBootstrapプログレスマークアップに変換します(CircleCounterMigration.php)。
9018 バッチ:旧プログレスバーマークアップをBootstrapプログレス構造に変換します(ProgressBarMigration.php)。
9020 Keyモジュールをインストールし、json_web_tokenをKeyエンティティdxpr_builder_jwtに移してapi_key_storageをkeyにし、平文値を消去します。
9021 ユーザーテンプレートのtypeプロパティーをマークアップから補完します。
9022 バッチ:内部/node/Nリンクにdata-entity-typeとdata-entity-uuidを付けます(EntityLinkMigration.php)。
9023 バッチ:9022がtext_with_summaryフィールドで失ったテキストフォーマット、概要、削除デルタを修復します。
9024 バッチ:エイリアス付き内部リンクを9022と同様に拡充します(AliasLinkMigration.php)。
9025 存在しない語彙を指すtone_of_voice_vocabularyを消去します。
9026 キーがKeyエンティティにある場合に設定に残った平文json_web_tokenを消去します。

更新9019はありません。

コンテンツ移行

3.xではコンテンツ移行はバッチのみで実行します。描画時の変換はなくなりました。移行状態ページ(/admin/dxpr_studio/dxpr_builder/migration-status)と状態レポートに未処理コンテンツが一覧されます。上記の更新フックが移行し、そのページのRun nowとRun all pending migrations操作でも移行します。移行はdxpr_builder.content_migrationタグ付きサービスです(dxpr_builder.services.yml)。失敗を記録したバッチは完了扱いになりません。失敗項目は記録され、未処理のまま残ります。

1.xと2.xが描画時に適用したglazed_to_dxpr文字列書き換えは削除されました。Glazed名は2020年5月の1.0.0で廃止され、Glazed・Carbide時代のコンテンツはすべてそれらのリリースで移行済みとみなします。書き換えは単なる文字列置換でした。Glazedに言及するだけのサイト(サポート記事、ドキュメントリンクなど)では、マークアップ移行ではなく文章を書き換えてリンクを壊す恐れがありました。保存コンテンツにGlazedクラス名が残るサイトは、先に2.xリリースを実行します。

カスタムコードの変更点

フィールドフォーマッター

フィールドフォーマッターIDはdxpr_builder_textです(ラベル「DXPR Builder」。src/Plugin/Field/FieldFormatter/DxprBuilderFormatter.php)。1.xから不変です。設定はprofile1つのみで、空はロールベースの既定、またはプロファイルIDです。各ビルダーフィールドが表示モードでこのフォーマッターを使い続けているか確認します。更新9023の修復は、そのフィールドに限られます。

フック

dxpr_builder.api.phpに3.xフックの文書があります。Glazed Builderのフックは次のとおり改名します。

Glazed Builderフック DXPR Builder 3.xフック
hook_glazed_builder_classes() hook_dxpr_builder_classes_alter(array &$dxpr_builder_classes)
hook_glazed_builder_buttons_folders() hook_dxpr_builder_element_buttons_folders_alter(array &$dxpr_element_buttons_folders)
hook_glazed_builder_elements_folders() 削除。代替フックなし。
なし hook_dxpr_builder_icon_sets_alter(array &$icon_sets)(新設)。アイコンセットはMODULE.dxpr_icon_sets.ymlファイルで宣言します。

CSSとユーティリティクラス

Glazedクラス名を狙うカスタムCSSはDXPR名にします(例:dxpr-theme-util、panel-dxpr、dxpr-builder)。エディターに公開するユーティリティクラスはhook_dxpr_builder_classes_alter()経由で提供します。

設定とデプロイ

  • コミット済み設定からjson_web_tokenを取り除きます。更新9020の後はキーがdxpr_builder_jwt Keyエンティティにあります。そのKeyはConfigurationプロバイダーのため、キーはkey.key.dxpr_builder_jwtとして引き続きエクスポートされます。エクスポートから外すには、FileまたはEnvironmentプロバイダーに/admin/config/system/keysで切り替えます。
  • 設定エクスポートには2つのAI語彙とタームが含まれるようになります。
  • プロファイルはCKEditor 5ボタン名をinline_buttonsとmodal_buttonsにエクスポートします。

トラブルシューティング

更新後にコンテンツが正しく表示されない場合:

  1. 実行するのはdrush cache:rebuildです。
  2. 確認するのは/admin/reports/dblogで、dxpr_builderチャンネルのメッセージを確認します。バッチ移行は飛ばした項目を記録します。
  3. 各ビルダーフィールドの表示モードが引き続きDXPR Builderフォーマッターか確認します。
  4. テーマがBootstrap 5を読み込むか確認します。または/admin/dxpr_studio/dxpr_builder/settingsでサイドロードを有効化します。

更新後のDXPR Builder一般設定ページ

次のステップ