DXPR Builder 1.x・2.xからの移行.
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のサイドロードはなくなりました。
移行手順
-
データベースとファイルをバックアップします。
drush sql:dump --result-file=backup.sql -
Composerでコードを更新します。3.xは現在プレリリースのため、許可します。
composer require 'drupal/dxpr_builder:^3.0@beta' --with-all-dependencies -
更新フックを実行し、キャッシュを再構築します。
drush updatedb drush cache:rebuildいくつかの3.xフックはすべてのDXPR Builderフィールド値をバッチで処理します(以下参照)。大規模サイトでは数秒ではなく数分掛かります。
-
設定画面
/admin/dxpr_studio/dxpr_builder/settingsを開き、Licenseセクションを確認します。更新9020の後はStorage methodがKey module、KeyがDXPR Builder JWT(dxpr_builder_jwt)です。 -
同じページのSideload Bootstrap filesを確認します。Bootstrap 3や4だったサイトはBootstrap 5になっています。
-
開くのは
/admin/dxpr_studio/dxpr_builder/ai_settingsで、初期値オンの3つのAIトグルをオンのままにするか決めます。 -
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_jwtKeyエンティティにあります。そのKeyはConfigurationプロバイダーのため、キーはkey.key.dxpr_builder_jwtとして引き続きエクスポートされます。エクスポートから外すには、FileまたはEnvironmentプロバイダーに/admin/config/system/keysで切り替えます。 - 設定エクスポートには2つのAI語彙とタームが含まれるようになります。
- プロファイルはCKEditor 5ボタン名を
inline_buttonsとmodal_buttonsにエクスポートします。
トラブルシューティング
更新後にコンテンツが正しく表示されない場合:
- 実行するのは
drush cache:rebuildです。 - 確認するのは
/admin/reports/dblogで、dxpr_builderチャンネルのメッセージを確認します。バッチ移行は飛ばした項目を記録します。 - 各ビルダーフィールドの表示モードが引き続きDXPR Builderフォーマッターか確認します。
- テーマがBootstrap 5を読み込むか確認します。または
/admin/dxpr_studio/dxpr_builder/settingsでサイドロードを有効化します。
