AEM アプリケーションへのタグの作成

カスタム AEM アプリケーション内のタグまたは拡張タグをプログラムで操作するために、このページでは、次の使用方法を説明します。

これは、次とやり取りします。

タグに関する関連情報については、次を参照してください。

タグ付け API の概要

AEM のタグ付けフレームワークの実装により、JCR API を使用してタグおよびタグコンテンツを管理できます。TagManagerでは、cq:tags文字列配列プロパティの値として入力したタグは重複しないように保証され、既存でないタグを指すTagIDは削除され、移動または結合されたタグのTagIDが更新されます。 TagManager は、間違った変更を元に戻す JCR 監視リスナーを使用します。メインクラスは com.day.cq.tagging パッケージ内にあります。

  • JcrTagManagerFactory - TagManager の JCR ベースの実装を返します。タグ付け API のリファレンス実装です。
  • TagManager - パスと名前を使用して、タグを解決して作成できます。
  • Tag - タグオブジェクトを定義します。

JCR ベースの TagManager の取得

TagManager インスタンスを取得するには、JCR Session を取得して getTagManager(Session) ) を呼び出す必要があります。

@Reference
JcrTagManagerFactory jcrTagManagerFactory;

TagManager tagManager = jcrTagManagerFactory.getTagManager(session);

通常の Sling コンテキストでは、TagManagerResourceResolver に適合させることもできます。

TagManager tagManager = resourceResolver.adaptTo(TagManager.class);

Tag オブジェクトの取得

Tag は、既存のタグを解決するか新しいタグを作成することにより、TagManager を介して取得できます。

Tag tag = tagManager.resolve("my/tag"); // for existing tags

Tag tag = tagManager.createTag("my/tag"); // for new tags

Tags を JCR Nodes にマップする JCR ベースの実装の場合、リソースがあれば(例:/content/cq:tags/default/my/tag)、Sling の adaptTo メカニズムを直接使用できます。

Tag tag = resource.adaptTo(Tag.class);

タグはaリソース(ノードではない)からしか変換できませんが、タグはaノードとリソースの両方*に変換できます。

Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
メモ

Node は Sling の Adaptable.adaptTo(Class) メソッドを実装しないので、NodeTag に直接適合させることはできません。

タグの取得と設定

// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);

// Setting tags to a Resource:
tagManager.setTags(resource, tags);

タグの検索

// Searching for the Resource objects that are tagged with the tag object:
Iterator<Resource> it = tag.find();

// Retrieving the usage count of the tag object:
long count = tag.getCount();

// Searching for the Resource objects that are tagged with the tagID String:
 RangeIterator<Resource> it = tagManager.find(tagID);
メモ

次の有効な RangeIterator を使用できます。

com.day.cq.commons.RangeIterator

タグの削除

tagManager.deleteTag(tag);

タグの複製

タグのタイプは Replicator なので、タグで複製サービス(nt:hierarchyNode)を使用できます。

replicator.replicate(session, replicationActionType, tagPath);

クライアント側でのタグ付け

CQ.tagging.TagInputField は、タグを入力するためのフォームウィジェットです。既存のタグから選択できるポップアップメニューを備えており、自動入力などの機能もあります。xtypeはtagsです。

タグのガベージコレクター

タグのガベージコレクターは、非表示および未使用のタグをクリーンアップするバックグラウンドサービスです。非表示および未使用のタグは、/content/cq:tagsの下のタグで、cq:movedToプロパティを持ち、コンテンツノードでは使用されません。数は0です。 この遅延削除プロセスを使用すると、移動や結合操作の一環としてコンテンツノード(cq:tags プロパティ)をアップデートする必要がありません。cq:tags プロパティの参照は、cq:tags プロパティがアップデートされると自動的にアップデートされます(例:ページプロパティダイアログを介して)。

タグのガベージコレクターは、デフォルトで 1 日に 1 回実行されます。これは、次の場所で設定できます。

http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector

タグ検索およびタグ一覧

タグ検索およびタグ一覧は次のように動作します。

  • TagIDを検索すると、cq:movedToプロパティがTagIDに設定され、cq:movedTo TagIDを通じて検索されます。

  • 「タグタイトル」を検索すると、cq:movedToプロパティを持たないタグのみが検索されます。

他の言語のタグ

タグの管理に関するドキュメントで説明されているように、異なる言語でのタグの管理の節では、タグtitleを異なる言語で定義できます。 言語に依存するプロパティがタグノードに追加されます。このプロパティは jcr:title.<locale> の形式を持ちます(例:フランス語訳は jcr:title.fr<locale> は、小文字のISOロケール文字列である必要があり、「 — 」の代わりに「_」を使用します。例: de_ch.

Animals​タグを​製品​ページに追加すると、値stockphotography:animalsがノード/content/geometrixx/en/products/jcr:contentのプロパティcq:tagsに追加されます。 翻訳は、タグノードから参照されます。

サーバーサイド API には、ローカライズされた title 関連のメソッドがあります。

  • com.day.cq.tagging.Tag

    • getLocalizedTitle(Locale locale)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(Locale locale)
    • getTitlePath(Locale locale)
  • com.day.cq.tagging.TagManager

    • canCreateTagByTitle(String tagTitlePath, Locale)
    • createTagByTitle(String tagTitlePath, Locale locale)
    • resolveByTitle(String tagTitlePath, Locale locale)

AEM では、言語はページ言語またはユーザー言語のどちらかから取得できます。

  • JSPでページ言語を取得するには:

    • currentPage.getLanguage(false)
  • JSPでユーザー言語を取得するには:

    • slingRequest.getLocale()

currentPage および slingRequest は、<cq:definedObjects> タグを介して JSP で使用できます。

タグ付けの場合、ローカライズはコンテキストに依存します。タグの titles はページ言語、ユーザー言語またはそれ以外の任意の言語で表示することができます。

タグを編集ダイアログへの新しい言語の追加

次の手順では、タグ編集​ダイアログに新しい言語(フィンランド語)を追加する方法を説明します。

  1. CRXDE で、ノード /content/cq:tags の複数値プロパティ languages を編集します。

  2. 追加fi_fi — フィンランド語のロケールを表し、変更を保存します。

新しい言語(フィンランド語)が、ページプロパティのタグダイアログと、タグ付け​コンソールでタグを編集する際の​タグの編集​ダイアログで使用できるようになりました。

メモ

新しい言語は、AEM で認識される言語である必要があります。つまり、/libs/wcm/core/resources/languages の下でノードとして使用できる必要があります。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now