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

- 表示されたプロンプトで [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コンテンツ表示ウィジェットを編集して保存し、ページを公開してください。