Show Menu
トピック×

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

カスタム AEM アプリケーション内のタグまたは拡張タグをプログラムで操作するために、このページでは、次の使用方法を説明します。
タグに関する関連情報については、次を参照してください。

タグ付け API の概要

AEM の タグフレームワーク の実装により、JCR API を使用してタグおよびタグコンテンツを管理できます。The TagManager ensures that tags entered as values on the cq:tags string array property are not duplicated, it removes TagIDs pointing to non-existing tags and updates TagIDs for moved or merged tags. 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 コンテキストでは、 TagManager ResourceResolver に適合させることもできます。
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

For the JCR-based implementation, which maps Tags onto JCR Nodes , you can directly use Sling's adaptTo mechanism if you have the resource (e.g. such as /content/cq:tags/default/my/tag ):
Tag tag = resource.adaptTo(Tag.class);

タグは aリソース(ノードではない)からしか変換できませんが、タグは aノードとリソースの両方*に変換できます。
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);

Directly adapting from Node to Tag is not possible, because Node does not implement the Sling Adaptable.adaptTo(Class) method.

タグの取得と設定

// 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 は、タグを入力するためのフォームウィジェットです。既存のタグから選択できるポップアップメニューを備えており、自動入力などの機能もあります。Its xtype is 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

タグ検索およびタグリスト

タグおよびタグ一覧の検索は次のように動作します。
  • The search for TagID searches for the tags that have the property cq:movedTo set to TagID and follows through the cq:movedTo TagIDs.
  • The search for tag Title only searches the tags that do not have a cq:movedTo property.

他の言語のタグ

As described in the documentation for administering tags, in the section Managing Tags in Different Languages , a tag title can be defined in different languages. 次に、言語に依存するプロパティがタグノードに追加されます。 このプロパティは、例えばフランス語 jcr:title.<locale> の翻訳の場合 jcr:title.fr などの形式を持ちます。 <locale> は、小文字のISOロケール文字列である必要があり、「 — 」の代わりに「_」を使用します。例: de_ch .
When the Animals tag is added to the Products page, the value stockphotography:animals is added to the property cq:tags of the node /content/geometrixx/en/products/jcr:content. 翻訳は、タグノードから参照されます。
サーバー側 API には、ローカライズされた title 関連のメソッドがあります。
    • getLocalizedTitle(Locale locale)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(Locale locale)
    • getTitlePath(Locale locale)
    • 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 、ノードの複数値プロパティ languages を編集し /content/cq:tags ます。
  2. フィ追加ンランド語のロケールを表す — 変更を保存します。 fi_fi
新しい言語(フィンランド語)が、ページプロパティのタグダイアログと、 タグ付け コンソールでタグを編集する際のタグの ​編集ダイアログで使用できるようになりました。
The new language needs to be one of the AEM recognized languages, i.e. it needs to be available as a node below /libs/wcm/core/resources/languages .