質問

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をページ」を使用して、リンクをポータルのアントハーページに進めることができます。それはあなたのポートレットの「ルックアンドフィール」メニュー項目の下にあります。私にとってこれは正常に機能します。

乾杯

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top