18

ポートレットにリンクを作成して、liferayポータルの別のページに移動できるようにします。私は、ページ名を指定すると、そのURLを返すAPI(liferay固有の場合もあります)を探していることを実行するように命令します(これは、friendlyURLの場合もあります)。

4

4 に答える 4

12

Liferay のポータル ページは実際Layoutsに API と DB テーブルで呼び出されます。それらはフィールドで識別され、関連する APIplidを使用して取得できます。LayoutLocalServiceUtilまた、 などの他の呼び出しからも取得できますthemeDisplay.getLayout()

ただし、ページへの URL を含む文字列を作成するには、ポータル、グループ、およびレイアウト自体のフレンドリ URL を連結する必要があります (つまり/web/guest/homeweb公開ページのポータル URL、guestデフォルトのゲスト グループのフレンドリ URL、およびhomeホームのフレンドリ URL です)。デフォルトではページ/レイアウト)。これは、公開ページか非公開ページかなどを確認する必要があるため、注意が必要です。

そして、グループのフレンドリ URL を持つ仮想ホストを使用し始めると、状況が変わります。したがって、これは良い方法ではありません。

手動で URL を作成することを避け、URL が正しいことが保証されるようにするにはcom.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)、静的メソッドを使用するPortalUtil必要があります。必要な作業はすべて行われます。ThemeDisplayただし、レイアウトだけでなく、提供する必要もあります。

于 2012-02-15T12:36:09.593 に答える
8

Liferay のページにアクセスするための API は LayoutService です。ただし、Liferay ではページ名は一意ではなく、さらに国際化されています。そのため、名前の他に、ページの URL を取得するための固有のプロパティが必要です。

本当にページ名しかない場合は、LayoutLocalServiceUtil.getLayouts(...) を使用してすべてのレイアウトをループし、いくつかのプロパティ (この場合はその名前) を確認できます。

于 2011-03-01T15:10:19.900 に答える