LiferayのページのURLをプログラム的に取得します
質問
Liferayポータルの別のページにナビゲートできるように、ポートレットにリンクを作成したいと思います。私は、ページ名を与えられたAPI(Liferay固有のことができます)を探していることを探しています。
解決
LiferayのページにアクセスするAPIは、レイアウトサービスです。ただし、ページ名はLiferayではユニークではなく、さらに国際化されています。そのため、その名前に加えて、URLを取得するには、ページにユニークなプロパティが必要です。
本当にページ名のみを持っている場合は、layoutlocalserviceutil.getLayouts(...)を使用して、すべてのレイアウトをループし、一部のプロパティを確認できます(この場合、その名前)。
他のヒント
Liferayのポータルページは確かに呼ばれています Layouts
APIおよびDBテーブルで。それらはによって識別されます 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
そして、レイアウトだけではありません。
少なくともLiferay 6.1.20では、「リンクポートレットURLをページ」を使用して、リンクをポータルのアントハーページに進めることができます。それはあなたのポートレットの「ルックアンドフィール」メニュー項目の下にあります。私にとってこれは正常に機能します。
乾杯