ポートレットにリンクを作成して、liferayポータルの別のページに移動できるようにします。私は、ページ名を指定すると、そのURL(friendlyURLでもかまいません)を返すAPI(liferay固有の場合があります)を探していることを実行します。
LiferayのページにアクセスするためのAPIはLayoutServiceです。ただし、ページ名はLiferayで一意ではなく、さらに国際化されています。そのため、名前に加えて、ページのURLを取得するための一意のプロパティが必要です。
本当にページ名しかない場合は、LayoutLocalServiceUtil.getLayouts(...)を使用してすべてのレイアウトをループし、いくつかのプロパティ(この場合はその名前)を確認できます。
Liferayのポータルページは、APIおよびDBテーブルでは実際にLayouts
と呼ばれています。これらはplid
フィールドで識別され、LayoutLocalServiceUtil
および関連するAPIを使用して取得できます。また、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
も提供する必要があります。
少なくともLiferay6.1.20では、「ポートレットURLをページにリンク」を使用して、ポータル内の別のページにリンクを進めることができます。ポートレットの「ルックアンドフィール」メニュー項目の下にあります。私にとってこれはうまくいきます。
乾杯