Show Menu
トピック×

Web サイトコンソールのカスタマイズ(クラシック UI)

Web サイト(サイト管理)コンソールにカスタム列を追加

カスタム列を表示するように Web サイト管理コンソールを拡張できます。このコンソールは JSON オブジェクトをベースに構築されており、これを拡張するには ListInfoProvider インターフェイスを実装する OSGI サービスを作成します。このサービスが、コンソール構築のためにクライアントに送信される JSON オブジェクトを修正します。
このステップバイステップのチュートリアルでは、 ListInfoProvider インターフェイスを実装して Web サイト管理コンソールに新しい列を表示する方法について説明します。主な手順は次のとおりです。
  1. OSGI サービスを作成 し、そのサービスを含むバンドルを AEM サーバーにデプロイします。
  2. (オプション)コンソールの構築に使用される JSON オブジェクトをリクエストする JSON 呼び出しを発行して、 新しいサービスをテスト します。
  3. リポジトリ内のコンソールのノード構造を拡張して、 新しい列を表示 します。
このチュートリアルは、次のような管理コンソールの拡張にも利用できます。
  • デジタルアセットコンソール
  • コミュニティコンソール

OSGI サービスの作成

ListInfoProvider インターフェイスは、次の 2 つのメソッドを定義します。
  • リストのグローバルプロパティを更新する updateListGlobalInfo
  • 単一のリスト項目を更新する updateListItemInfo
どちらのメソッドにも次の引数があります。
  • request :関連付けられた Sling HTTP リクエストオブジェクト
  • info :更新する JSON オブジェクト。グローバルリストまたは現在のリスト項目に 1 つずつ
  • resource 、Slingリソースです。
次の実装例では、
  • 各項目に starred プロパティを追加します。ページ名が「 true e 」で始まる場合は ​で、それ以外の場合は false です。
  • starredCount プロパティを追加します。このプロパティはリストに対してグローバルで、星印の付いたリスト項目の数が格納されます。
OSGI サービスの作成手順
  1. 次のサンプルコードを追加します。
  2. バンドルをビルドします。
新しいサービスが起動し、実行されます。
package com.test;

import com.day.cq.commons.ListInfoProvider;
import com.day.cq.i18n.I18n;
import com.day.cq.wcm.api.Page;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;

@Component(metatype = false)
@Service(value = ListInfoProvider.class)
public class StarredListInfoProvider implements ListInfoProvider {

    private int count = 0;

    public void updateListGlobalInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
        info.put("starredCount", count);
        count = 0; // reset for next execution
    }

    public void updateListItemInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
        Page page = resource.adaptTo(Page.class);
        if (page != null) {
            // Consider starred if page name starts with 'e'
            boolean starred = page.getName().startsWith("e");
            if (starred) {
                count++;
            }
            I18n i18n = new I18n(request);
            info.put("starred", starred ? i18n.get("Yes") : i18n.get("No"));
        }
    }

}

  • 指定されたリクエストやリソースに基づいて、情報を JSON オブジェクトに追加すべきかどうかを実装が判断する必要があります。
  • ListInfoProvider の実装が、応答オブジェクト内に既に存在するプロパティを定義している場合、そのプロパティの値は、指定した値で上書きされます。 サービスランキング を使用して、複数の ListInfoProvider 実装の実行順序を管理できます。

新しいサービスのテスト

Web サイト管理コンソールを開いてサイトを閲覧すると、ブラウザーがコンソールの構築に使用されている JSON オブジェクトを取得するための ajax 呼び出しを発行します。For example, when you browse to the /content/geometrixx folder, the following request is sent to the AEM server to build the console:
新しいサービスを含むバンドルのデプロイ後に、そのサービスが実行されていることを確認するには、以下をおこないます。
  1. ブラウザーで次のURLを指定します。
  2. 応答によって、新しいプロパティが次のように表示されます。

新しい列の表示

The last step consists in adapting the nodes structure of the Websites Administration console to display the new property for all the Geometrixx pages by overlaying /libs/wcm/core/content/siteadmin . 以下の手順を実行します。
  1. In CRXDE Lite, create the nodes structure /apps/wcm/core/content with nodes of type sling:Folder to reflect the structure /libs/wcm/core/content .
  2. ノードをコピーし、 /libs/wcm/core/content/siteadmin 下に貼り付けま /apps/wcm/core/content す。
  3. ノードをにコピーし、 /apps/wcm/core/content/siteadmin/grid/assets そのプ /apps/wcm/core/content/siteadmin/grid/geometrixx ロパティを変更します。
    • pageText を削除
    • Set pathRegex to /content/geometrixx(/.*)?
      に設定すべての Geometrixx Web サイトに対してグリッド設定が有効になります。
    • Set storeProxySuffix to .pages.json
    • 複数値プロパティ storeReaderFields を編集し、 starred 値を追加します。
    • To activate MSM functionality add the following MSM parameters to the multi-String property storeReaderFields :
      • msm:isSource
      • msm:isInBlueprint
      • msm:isLiveCopy
  4. Add a starred node (of type nt:unstructured ) below /apps/wcm/core/content/siteadmin/grid/geometrixx/columns with the following properties:
    • dataIndex :文 starred 字列型
    • header :文 Starred 字列型
    • xtype :文 gridcolumn 字列型
  5. (optional) Drop the columns you do not want to display at /apps/wcm/core/content/siteadmin/grid/geometrixx/columns
  6. /siteadmin は、デフォルトではが指すバニティパスです /libs/wcm/core/content/siteadmin
    To redirect this to your version of siteadmin on /apps/wcm/core/content/siteadmin define the property sling:vanityOrder to have a value higher than that defined on /libs/wcm/core/content/siteadmin . デフォルト値は 300 なので、それより大きい値が適しています。
  7. Webサイト管理コンソールに移動し、Geometrixxサイトに移動します。
  8. Starred 」という新しい列が使用可能になり、次のようにカスタム情報が表示されます。
pathRegex プロパティによって定義されるリクエストパスに複数のグリッド設定が一致する場合は、最も詳しい設定ではなく、最初の設定が使用されます。つまり、設定の順序が重要です。

サンプルパッケージ

The outcome of this tutorial is available in the Customizing the Websites Administration Console package on Package Share.