カスタムパネルアプリの追加

カテゴリを作成したら、そこに追加するパネルアプリを作成します。

  1. お気に入りのサードパーティツールを使用してOSGiモジュールを作成するか、Blade CLIを使用します。Blade CLIは、基本的なパネルカテゴリとパネルアプリの作成に役立つPanel Appテンプレートを提供します。

  2. モジュールのsrcディレクトリに一意のパッケージ名を作成し、そのパッケージに新しいJavaクラスを作成します。命名規則に従うには、クラスに一意の名前を付け、その後にPanelApp (例:JournalPanelApp)を付けます。

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

    @Component(
    immediate = true,
    property = {
    "panel.app.order:Integer=INTEGER"
    "panel.category.key=" + PANEL_CATEGORY_KEY,
    },
    service = PanelApp.class
    )
    

    これらのプロパティと属性は、前のチュートリアルで説明したものと同様です。 panel.category.keyは、パネルアプリをパネルカテゴリに割り当てます。panel.app.order:Integerプロパティは、同じカテゴリの他のパネルアプリの中で、あなたのパネルアプリが表示される順序を指定します。たとえば、パネルアプリを[サイト管理] → *[Content]*に追加する場合は、次のプロパティを追加します。

    "panel.category.key=" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT
    

    Liferayでデフォルトのパネルカテゴリを指定するために使用できるキーについては、PanelCategoryKeysクラスにアクセスしてください。

    service属性をPanelApp.classに設定します。JournalPanelAppクラスに対する同様の@Componentアノテーションの例を以下に示します。

    @Component(
    immediate = true,
    property = {
    "panel.app.order:Integer=100",
    "panel.category.key=" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT
    },
    service = PanelApp.class
    )
    
  4. BasePanelApp抽象クラスを拡張して、PanelAppインターフェイスを実装します。パネルカテゴリに関する前のチュートリアルで学習したように、パネルでレンダリングするためにより複雑なUIを作成する必要がある場合は、作成できます。

    JSPを使用してそのUIをレンダリングする場合は、BaseJSPPanelAppを拡張します。 これにより、JSP機能を製品メニューのアプリのリストに組み込むために使用できる追加のメソッドが提供されます。

    JSPは、パネルアプリにフロントエンド機能を提供する唯一の方法ではありません。PanelCategoryを実装する独自のクラスを作成して、FreeMarkerなどの他のテクノロジーを使用できます。

  5. 基本クラスを拡張せずにPanelAppインターフェイスを実装している場合は、そのメソッドを実装する必要があります。 BlogsPanelAppは、ポートレットをパネルアプリとして指定する方法の分かりやすい例です。このクラスはBasePanelAppを拡張し、getPortletIdおよびsetPortletメソッドをオーバーライドします。これらのメソッドは、ブログポートレットをパネルアプリとして指定および設定します。

    各パネルアプリはポートレットに属している必要があり、各ポートレットには最大1つのパネルアプリを含めることができます。複数のパネルアプリが必要な場合は、別のポートレットを作成する必要があります。デフォルトでは、パネルアプリは、ユーザーが関連するポートレットを表示する権限を持っている場合にのみ表示されます。

    これらのメソッドは、ブログポートレットを次のように検索します。

    @Override
    public String getPortletId() {
    return BlogsPortletKeys.BLOGS_ADMIN;
    }
    
    @Override
    @Reference(
    target = "(javax.portlet.name=" + BlogsPortletKeys.BLOGS_ADMIN + ")",
    unbind = "-"
    )
    public void setPortlet(Portlet portlet) {
    super.setPortlet(portlet);
    }
    

    製品メニューでパネルアプリの外観をカスタマイズすることもできます。前に学んだように、BaseJSPPanelApp抽象クラスを拡張して、JSPにさらに機能を提供できます。

これで、製品メニューでパネルアプリを追加または変更する方法がわかりました。Liferayは、新しいパネルカテゴリとアプリを追加する簡単なソリューションを提供するだけでなく、任意のテクノロジーを使用して、より複雑なUIを製品メニューに追加する柔軟性も提供しています。

« カスタムパネルカテゴリの追加コントロールメニューのカスタマイズ »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています