問題
- DXP 7.0 から DXP 7.4 にアップグレードした後、管理者以外のロールを持つユーザーは、「マイサイト」セクションの最近のタブで最近のサイトを見ることができません。
Environment
- Liferay DXP 7.2
- Liferay DXP 7.3
- Liferay DXP 7.4
解決策
- LPS-97367によって導入された。 現在、最近のサイト・ナビゲーションは、ユーザーのパーソナル・バーがサイトのテーマに存在するかどうかに依存している。 開発者がユーザーのパーソナルバー( <@liferay.user_personal_bar />)をテーマに追加したくない場合、そのサイトは "最近の "サイトナビゲーションに表示されません。
- 現在の振る舞いを変えるには、重要なリファクタリングが必要であり、それほど大きな価値を提供しないため、その労力は大きい。 また、サイトのメニューを使ってナビゲートする以外に、それを機能させる意図はコードになかった。
- コードをカスタマイズすることで、現在の問題を解決できる可能性がある。 以下の情報は、カスタマイズを実装するためのヒントであり、開発チームが独自の判断で適用するためのものです。 カスタマイズはLiferay Supportとは互換性がありません:
必要なコードを呼び出すカスタムポートレットを作成し、埋め込み、必要に応じて「最近のサイト」リストにサイトを追加します。 ポートレット作成の手順は、ここにあります:MVC を使うと、ポートレットをテーマに埋め込む手順は、こちらにあります:
テーマへのポートレットの埋め込み。 作成されたポートレットは、レンダリング時に次のコードを呼び出す必要があります:
_recentGroupManager.addRecentGroup( _portal.getHttpServletRequest(renderRequest), themeDisplay.getScopeGroupId());
それから、ポートレットをテーマに埋め込むだけで、最近のサイトにページが表示されるようになります。
このポートレットは、現在のproduct-navigation-user-personal-webポートレットに似ています。 ですから、一つの方法として、そのポートレットをコピーして、_recentGroupManager.addRecentGroup
を呼び出すのに必要な部分以外をすべて削除することができます。
単に最近のサイトリストに現在のサイトを追加するためにレンダリングメソッドを呼び出しているだけの、非常にシンプルなほとんど空のポートレットが残ります。 そして、 <liferay-portlet:runtime >
タグを使って、 ポートレット をテーマに埋め込むことができます。
カスタマイズにサポートが必要な場合は、GS(グローバルサービス)にご相談ください。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン