ウィジェットページをコンテントページに変換する
以前のバージョンでは、ウィジェット ページはカスタム レイアウトやカスタマイズ可能な列などの独自の機能を提供していました。 これらの独自の機能の多くは、7.3 以降では コンテンツ ページ で利用できるため、通常はコンテンツ ページを作成することをお勧めします。
以前のバージョンから Liferay Portal 7.3 または 7.4 にアップグレードし、既存のウィジェット ページを移行する場合は、それらをコンテンツ ページに変換できます。 ウィジェット ページをすぐにコンテンツ ページに変換することも、変換をプレビューして変更を加えてからページを変換することもできます。
変換するページが複数ある場合は、サイト管理を通じて一括変換することも、利用可能な API と組み込みのスクリプト エディターを使用してすべてのウィジェット ページを一度に変換することもできます。 ここでは、すべてのアプローチについて説明します。
ウィジェットページをプレビューしてコンテントページに変換する
ウィジェット ページを変換する前に変換ドラフトをプレビューするには、次の手順に従います。
-
サイト メニュー (
) を開き、 サイト ビルダー → ページに移動します。 -
目的のウィジェット ページの横にある アクション (
) を開き、 コンテンツ ページに変換…を選択します。 -
警告を確認し、変換下書きに必要な調整を行います。 この時点で、必要なフラグメントを下書きに追加することもできます。
-
プレビュー下書きを公開するには、 「公開」 をクリックします。ウィジェット ページを元の状態にリセットするには、 「変換下書きを破棄」 をクリックします。 警告がある場合は、以下で説明するように、ベストエフォートの変換が完了します。
ベストエフォートコンバージョン
ウィジェット ページの一部の機能はコンテンツ ページでサポートされていないため、そのままでは変換できません。 これらの場合、ユーザーには問題が警告され、ベストエフォートの変換が処理されます。 次のウィジェット ページ機能はサポートされていません:
入れ子になったアプリケーション: 入れ子になったアプリケーションは、変換中にレイアウトの同じ列に配置されます。 ベスト エフォートの変換が完了したら、必要に応じてこれらのアプリケーションを再編成します。
カスタマイズ可能なセクション: ページが カスタマイズ可能である場合、ユーザーが行ったカスタマイズは変換中に失われます。
カスタムページレイアウト: レイアウトを変換できる場合、レイアウトの構造が保持され、ユーザーに警告が表示され、処理する前に変換下書きを確認する機会が与えられます。 レイアウトを変換できない場合、すべてのウィジェットは単一の行と列に配置されるため、ページの変換後に手動で再編成する必要があります。
カスタム レイアウト テンプレートが変換可能であることが既に確認されている場合は、レイアウト テンプレートのレイアウト テンプレート変換の警告を無効にして、レイアウトを使用するウィジェット ページを変換するたびに警告が表示されないようにすることができます。
グローバル メニュー (
) を開き、 コントロール パネル → 構成 → システム設定に移動します。
「コンテンツとデータ」の下の ページ を選択し、 ウィジェット ページからコンテンツ ページへのコンバーターに移動して、レイアウト テンプレート ID を検証済みレイアウト テンプレート ID のリストに追加します。
ポートレットはウィジェット ページでは レンダリング ウェイト に従ってレンダリングされますが、コンテンツ ページではそうではありません。 ポートレットは、コンテンツ ページのページに表示される順序 (つまり、左から右、上から下) でレンダリングされるため、コンテンツ ページ上の配置に応じて、一部のポートレットが早くレンダリングされたり遅くレンダリングされたりすることがあります。
ウィジェットページをコンテントページに直接変換する
-
サイト メニュー (
) を開き、 サイト ビルダー → ページに移動します。 -
ウィジェット ページまたは複数のウィジェット ページのボックスをチェックします。 管理ツールバーの アクション (
) をクリックし、 コンテンツ ページに変換 オプションを選択します。

- 表示されたプロンプトで [OK] をクリックして変換を完了します。
APIを使用してすべてのウィジェットページをコンテントページに一括変換する
組み込みのスクリプト エディターを使用して、サイト上のすべてのウィジェット ページをコンテンツ ページに一括変換できます。
-
グローバル メニュー (
) を開き、 コントロール パネル → システム → サーバー管理 → スクリプトに移動します。 -
スクリプトウィンドウにこのスクリプトを入力します。必ず、グループIDを自分のものに置き換えてください。 Groovy スクリプトは、
BulkLayoutConverterインターフェース を使用して、指定されたグループ ID を持つすべてのウィジェット ページをコンテンツ ページに変換します。import com.liferay.layout.util.BulkLayoutConverter import com.liferay.portal.kernel.util.ArrayUtil import org.osgi.framework.ServiceReference import org.osgi.framework.BundleContext import com.liferay.portal.kernel.module.util.SystemBundleUtil import org.osgi.framework.BundleContext BundleContext bundleContext = SystemBundleUtil.getBundleContext(); ServiceReference serviceReference = bundleContext.getServiceReference(BulkLayoutConverter.class.getName()); BulkLayoutConverter bulkLayoutConverter = bundleContext.getService(serviceReference); long groupId = 20118L // Use your groupId long[] plids = bulkLayoutConverter.getConvertibleLayoutPlids(groupId) out.println("Convertible layouts before conversion:" + ArrayUtil.toStringArray(plids)) long[] convertedLayoutPlids = bulkLayoutConverter.convertLayouts(groupId) out.println("Converted layouts:" + ArrayUtil.toStringArray(convertedLayoutPlids)) plids = bulkLayoutConverter.getConvertibleLayoutPlids(groupId) out.println("Convertible layouts after conversion: " + ArrayUtil.toStringArray(plids)) -
スクリプトを実行するには、 実行 をクリックします。
-
出力は以下のスニペットのようになり、変換可能なレイアウト(ページ)が残っていないことが示されます。
Convertible layouts before conversion:[25, 26, 27] Converted layouts:[25, 26, 27] Convertible layouts after conversion: []
トラブルシューティング
以下は、ウィジェット ページをコンテンツ ページに変換するときに発生する可能性のある問題です。
削除されたユーザーが作成したウィジェットページを変換すると変換が失敗する
削除されたユーザーによって作成されたウィジェット ページを変換しようとすると、エラーが発生してプロセスが失敗します。
これを解決するには、ウィジェット ページをコピーし、そのコピーをコンテンツ ページに変換して、元のウィジェット ページを削除します。
Webコンテンツ表示ウィジェットの問題
変換されたページに Web コンテンツ表示ウィジェットが存在する場合、Web コンテンツの検索結果をクリックすると、ページ コンテキスト外で開くことがあります。
コンテンツが正しいページ内に表示されるようにするには、Web コンテンツ表示ウィジェットを編集して保存し、ページを公開します。