ポートレットにリンクを作成して、liferayポータルの別のページに移動できるようにします。私は、ページ名を指定すると、そのURLを返すAPI(liferay固有の場合もあります)を探していることを実行するように命令します(これは、friendlyURLの場合もあります)。
4 に答える
Liferay のポータル ページは実際Layouts
に API と DB テーブルで呼び出されます。それらはフィールドで識別され、関連する APIplid
を使用して取得できます。LayoutLocalServiceUtil
また、 などの他の呼び出しからも取得できますthemeDisplay.getLayout()
。
ただし、ページへの URL を含む文字列を作成するには、ポータル、グループ、およびレイアウト自体のフレンドリ URL を連結する必要があります (つまり/web/guest/home
、web
公開ページのポータル URL、guest
デフォルトのゲスト グループのフレンドリ URL、およびhome
ホームのフレンドリ URL です)。デフォルトではページ/レイアウト)。これは、公開ページか非公開ページかなどを確認する必要があるため、注意が必要です。
そして、グループのフレンドリ URL を持つ仮想ホストを使用し始めると、状況が変わります。したがって、これは良い方法ではありません。
手動で URL を作成することを避け、URL が正しいことが保証されるようにするにはcom.liferay.portal.util.PortalUtil.getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
、静的メソッドを使用するPortalUtil
必要があります。必要な作業はすべて行われます。ThemeDisplay
ただし、レイアウトだけでなく、提供する必要もあります。
Liferay のページにアクセスするための API は LayoutService です。ただし、Liferay ではページ名は一意ではなく、さらに国際化されています。そのため、名前の他に、ページの URL を取得するための固有のプロパティが必要です。
本当にページ名しかない場合は、LayoutLocalServiceUtil.getLayouts(...) を使用してすべてのレイアウトをループし、いくつかのプロパティ (この場合はその名前) を確認できます。