データエンジンを使用したWebコンテンツ構造
Liferay 7.4 以降、Web コンテンツ構造は、フォームを構築するためのバックエンド フレームワークとして、ダイナミック データ マッピング (DDM) からデータ エンジン (DE) に移行されました。

データ エンジン フレームワークは、Web コンテンツ構造に新たな変更と機能強化をもたらします。
改良された新しいフィールドタイプ
データエンジンへの移行に伴い、フィールドタイプを追加し、改良しました。
- [リストから選択] フィールドのオプションはアルファベット順に並べることができます ([リストから選択] フィールドの詳細設定を使用します)。
- 数値フィールドを整数または小数のフィールドとして設定します。
- グリッド フィールドは、Web コンテンツ、ドキュメント、メディアの新しいフィールド タイプです。 詳細については、 フォーム フィールド タイプ リファレンス を参照してください。
- HTML フィールドは、便利なツールバーを含むリッチ テキスト フィールドに置き換えられました。
ブールフィールドと複数選択フィールド: データ エンジンには、最初はブールフィールドは含まれていませんでした。 代わりに、アップグレードされた構造内のブールフィールドは、同じラベルと 1 つのオプションのみを使用して、データ エンジンの複数選択フィールドを使用するように移行されました。 たとえば、テンプレートがブールフィールドを持つ構造体上に構築された場合など、これによっていくつかの問題が発生する可能性があります。 Liferay 7.4 アップデート/GA 23で、データエンジンにブール値項目タイプが追加されました。 アップデート 23 以降にアップグレードされた構造では、Web コンテンツ構造内の 7.3 DDM ブール フィールドが 7.4 DE ブール フィールドに正常に変換されます。 この変更の前にインストールがアップグレードされた場合は、影響を受ける構造を編集して、これらの単一オプションの複数選択フィールドをブール フィールドに手動で変更する必要があります。
リッチテキストフィールドの動作の変更
データ エンジン フレームワークへの移行の一環として、Web コンテンツ構造のリッチ テキスト フィールドに大きな変更が加えられました。 新しいリッチ テキスト フィールドでは、以前のダイナミック データ マッピング (DDM) リッチ テキスト フィールドに代わって、CKEditor がデフォルトの WYSIWYG エディターとして使用されます。
Liferay DXP 2024.Q1+/Portal GA112+以降では、 クライアント拡張機能 を使用して CKEditor の設定をカスタマイズできるようになり、エディターをニーズに合わせて柔軟にカスタマイズできるようになりました。
子ストラクチャーをストラクチャーフィールドセットに置き換える
DDM によってサポートされる構造には、親のすべてのフィールドと設定を継承した子構造を含めることができます。 フィールドセットを作成し、それを使用して構造に再利用可能なフィールドセットを作成できるようになったため、この関係は存在しなくなりました。 フィールドセットを使用すると、編集時に構造がどのようになっているかを確認できるため、編集エクスペリエンスが向上します。
フィールドセットは複数の構造間で再利用できます。 単一の構造内で編集すると、すべての構造が一度に変更されます。
フィールドセットまたは構造が Web コンテンツで使用されている場合、編集時にユーザーに警告が表示されます。

フィールドセットと連動するには、以下を行います。
-
サイト メニュー (
) に移動し、 コンテンツとデータ → Web コンテンツに移動します。 -
構造 タブを選択します。
-
新しい構造を作成するには、 新規 をクリックします。
-
Web コンテンツ構造フォーム ビルダー ビュー (
) で、 フィールドセット タブをクリックします。 -
新しいフィールドセットの作成をクリックします。 フィールドセットに名前を付けます。
-
そのフィールドを追加し、設定します。 [保存]をクリックします。

新しい構造の作成を開始するときに、[フィールドセット] タブで既存のフィールドセットまたは構造を選択できます。 基本的な Web コンテンツ構造は、すぐに使用できるフィールドセットとして含まれています。
ストラクチャー定義ソースの変更
DEではストラクチャーがJSONで表されます(DDMではXMLでした)。 Web コンテンツ構造 UI でコードを編集するのではなく、構造定義をインポートおよびエクスポートして、構造のソース JSON をローカルで操作できるようになりました。
JSON 構造ソースは一見したよりも複雑になる可能性があるため、慎重に作業してください。 たとえば、構造体にフィールドを追加する場合は、 dataDefinitionFields 配列と defaultDataLayout 要素の両方を更新する必要があります。
Liferay DXP 2025.Q1+/Portal GA132+ では、Web コンテンツ構造は内部的に生成された外部参照コード (ERC) を使用してエクスポートされます。 新しいシステムまたは環境にインポートされると、ERC によって構造を参照するエンティティは、手動で更新することなく機能し続けます。
構造体のJSONのエクスポート
-
サイト メニュー (
) に移動し、 コンテンツとデータ → Web コンテンツに移動します。 -
構造 タブをクリックします。
-
既存の構造が存在しない場合は、 1 つ作成して 保存します。
-
メイン構造リストビューで、構造の アクション メニュー (
) を開き、 JSON としてエクスポートをクリックします。
構造の JSON をインポートして既存の構造を上書きする
既存の構造のJSONを上書きするには、
-
サイト メニュー (
) に移動し、 コンテンツとデータ → Web コンテンツに移動します。 -
構造 タブをクリックします。
-
既存の構造が存在しない場合は、 1 つ作成して 保存します。
-
メイン構造リストビューで、構造の アクション メニュー (
) を開き、 インポートとオーバーライドをクリックします。 -
JSONファイルをアップロードします。

インポートとオーバーライドの動作は、構造キーの自動生成設定によって異なります。
- 有効にすると、インポートは失敗し、UI に「 構造キーを変更できません。」と表示されます。
- 無効にすると、インポートは成功し、JSON ファイルのキーが構造キーに置き換えられます。
この設定を構成する手順については、 Web コンテンツ構造キーの設定 を参照してください。
構造体のJSONをインポートして新しい構造体を作成する
新しい構造をインポートするには、
-
サイト メニュー (
) に移動し、 コンテンツとデータ → Web コンテンツに移動します。 -
構造 タブをクリックします。
-
画面の右上隅にある Web コンテンツの オプション メニュー (
) を開きます。 -
構造のインポートをクリックします。

フレキシブルなストラクチャーレイアウト
以前は、構造フィールドをフォーム上で順序付け、ネストしてフォームの階層ビューを作成できました。 構造のデータ エンジン表現により、列を定義する機能が追加されます。

ストラクチャービルダーで2つのフォーム項目を隣同士に追加し、フィールドの端をドラッグして列のサイズを変更します。
列に加えて、フィールド グループを使用して、構造のフィールドのサブセットをまとめてロックし、管理を容易にします。 フィールドを別のフィールドの上にドロップして、フィールド グループを作成します。
Webコンテンツストラクチャーキーの設定
新しい構造を作成するとき、または JSON を新しい構造としてインポートするときに、構造キーを手動で設定できます。
既存の構造体をインポートして上書きする場合、構造体のキーを更新することはできません。
インポートとオーバーライドは、構造キーの自動生成設定にも依存します。 インポートの失敗やキーの変更を回避するには、まずこの構成を確認してください。 詳細については、 構造体の JSON をインポートして既存の構造体を上書きする を参照してください。
-
グローバル メニュー (
) を開き、 コントロール パネル タブに移動します。 -
システム レベルで構成するには、 構成 → システム設定 → Web コンテンツ (コンテンツとデータの下) に移動します。
-
Liferay DXP 2024.Q4+/Portal GA129+ インスタンスレベルで設定するには、 構成 → インスタンス設定 → Web コンテンツ (コンテンツとデータの下)に移動します。
-
管理をクリックします。 構造キーの自動生成 のチェックを外し、 更新をクリックします。
Liferay DXP 2024.Q4+/Portal GA129+の場合は、仮想インスタンススコープの下にある Webコンテンツ をクリックします。 構造キーの自動生成 のチェックを外し、 更新をクリックします。
ヒント同じ構成を Web コンテンツ テンプレートに適用するには、 テンプレート キーの自動生成のチェックを外します。
-
サイト メニュー (
) に移動し、 コンテンツとデータ → Web コンテンツに移動します。 「構造」タブを開き、新しい構造を追加します。 -
フィールドを追加し、構造に名前を付けます。 構造キーを手動で設定するには、構成アイコン (
) をクリックして プロパティ サイドバー を開きます。 -
[ストラクチャーキー]フィールドを編集し、カスタム値を追加します(例:
MY_STRUCTURE_KEY)。 -
構造を保存します。
新しいデータエンジンに基づくストラクチャーでは、エクスポート処理でJSONからストラクチャーキーが取り除かれます。 つまり、定義を(例えば新しいサイトに)インポートすると、新しいストラクチャーキーが生成されます。 エクスポートとインポートのプロセスでストラクチャーキーを保持したい場合、または新しいカスタムキーを提供したい場合は、エクスポートされたJSONを編集する必要があります。
エクスポートされたJSONにカスタム構造キーを追加するには、
-
エクスポートしたJSONファイル(例:
Structure_my structure_42153_20220721144913685.json)を開きます。 -
"dataDefinitionKey"要素を"dataDefinitionField"要素の前に追加します。{ "availableLanguageIds": ["en_US"], "contentType": "journal", "dataDefinitionKey": "MY_STRUCTURE_KEY", "dataDefinitionFields": [{"..."}] } -
構造定義ファイルをインポート し、[プロパティ] タブでキーがインポートされたことを確認します。

開発者向け考慮事項: ヘッドレス API レスポンスの重大な変更
データ エンジン フレームワークへの移行により、ヘッドレス API の 構造化コンテンツ エンドポイントに重大な変更が導入されました。
-
ネストされたフィールド: レスポンスでは、新しい FieldSet タイプを使用してネストされたフィールドをグループ化し、レスポンス構造にレイヤーを追加するようになりました。 アプリケーションでは、これらのネストされたフィールドを解析および処理するためのロジックをリファクタリングする必要があります。
-
選択フィールドのデータ形式: 選択フィールドのデータ属性が変更され、選択フィールドの値の取得および処理方法に影響します。 以前の形式に依存するアプリケーションは、互換性を確保するために更新する必要があります。