ユーザーパーソナルバーの提供

ユーザーパーソナルバーには、現在のユーザーに固有のオプションが表示されます。デフォルトでは、このメニューは製品メニューの[User Settings]サブメニューを展開するアバターボタンとして表示されます。カスタムテーマでは、ユーザーパーソナルバーはインターフェイスのどこにでも表示できます。

図1:デフォルトでは、ユーザーパーソナルメニューにはサインインしたユーザーのアバターが含まれおり、選択すると製品メニューに移動します。

Liferayのデフォルトのユーザーパーソナルバーは必要最小限の構成となっていますが、ニーズに合わせて機能を追加できます。他の製品ナビゲーションメニュー(製品メニューなど)とは異なり、ユーザーパーソナルバーは、パネルカテゴリとパネルアプリの拡張/作成を必要としません。

ユーザーパーソナルバーは、すべてのLiferayテーマでプレースホルダーとして表示できます。デフォルトでは、Liferayはそのプレースホルダーを埋める1つのサンプルのユーザーパーソナルバーポートレットを提供しますが、Liferayが提供するポートレットは他のポートレットに簡単に置き換えることができます。

**注:**次のスニペットをportal_normal.ftlに追加することにより、ユーザーパーソナルバーをテーマに追加できます。

<@liferay.user_personal_bar />

このチュートリアルでは、ユーザーパーソナルバーをカスタマイズする方法を学びます。Javaクラスを1つ作成し、既存のデフォルトのポートレットを置き換えるポートレットを指定します。

  1. OSGiモジュールを作成します

  2. モジュールのsrcディレクトリに一意のパッケージ名を作成し、そのパッケージに新しいJavaクラスを作成します。

  3. クラス宣言の上に、次のアノテーションを挿入します。

    @Component(
    immediate = true,
    property = {
    "model.class.name=" + PortalUserPersonalBarApplicationType.UserPersonalBar.CLASS_NAME,
    "service.ranking:Integer=10"
    },
    service = ViewPortletProvider.class
    )
    

    model.class.nameプロパティは、ポートレットで処理するエンティティタイプのクラス名に設定する必要があります。この場合、ポートレットをユーザーパーソナルバーに表示できるかどうかに基づいて提供する必要があります。

    また、デフォルトをオーバーライドするように、新しいポートレットのサービスランクを指定する必要があります。service.ranking:Integerプロパティを、デフォルトで使用されているポートレットよりもランクが高い値に設定してください。

    ユーザーパーソナルバーにのみポートレットを表示するため、 service要素は、ViewPortletProvider.classでなければなりません。

  4. クラスの宣言を更新して、BasePortletProvider抽象クラスを拡張し、ViewPortletProviderを実装します。

    public class ExampleViewPortletProvider extends BasePortletProvider implements ViewPortletProvider {
    
  5. クラスで次のメソッドを宣言して、ユーザーパーソナルバーに必要なポートレットを指定します。

    @Override
    public String getPortletName() {
    return PORTLET_NAME;
    }
    

    PORTLET_NAMEテキストを、Liferayからユーザーパーソナルバーに表示するポートレットの要求があった場合に提供するポートレットに置き換えます。たとえば、Liferayは、デフォルトのユーザーパーソナルバーポートレットに対してcom_liferay_product_navigation_user_personal_bar_web_portlet_ProductNavigationPersonalBarPortletを宣言します。

ユーザーパーソナルバーに表示されるポートレットが正常に提供されました。 Liferayのデフォルトのユーザーパーソナルバーに使用されるモジュール全体を検査する場合は、product-navigation-user-personal-bar-webを参照してください。 このモジュールには、*ViewPortletProviderクラスの他に、定数を定義する2つのクラスと、提供するデフォルトのポートレットを定義する1つのポートレットクラスが含まれています。 これらの追加のクラスは必須ではありませんが、モジュールは提供するポートレットにアクセスできる必要があります。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています