カスタム AEM アプリケーション内のタグまたは拡張タグをプログラムで操作するために、このページでは、次の使用方法を説明します。
が
タグに関する関連情報については、次を参照してください。
AEM のタグフレームワークの実装により、JCR API を使用してタグおよびタグコンテンツを管理できます。TagManagerでは、cq:tags
文字列配列プロパティの値として入力したタグは重複しないように保証され、既存でないタグを指すTagIDは削除され、移動または結合されたタグのTagIDが更新されます。 TagManager は、間違った変更を元に戻す JCR 監視リスナーを使用します。メインクラスは com.day.cq.tagging パッケージ内にあります。
TagManager
の JCR ベースの実装を返します。タグ付け API のリファレンス実装です。TagManager
— パスと名前によるタグの解決と作成を可能にします。Tag
— タグオブジェクトを定義します。TagManager インスタンスを取得するには、JCR Session
を取得して getTagManager(Session)
) を呼び出す必要があります。
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
通常の Sling コンテキストでは、TagManager
を ResourceResolver
に適合させることもできます。
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
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)
メソッドを実装していないので、Node
からTag
に直接適応させることはできません。
// 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
関連のメソッドがあります。
AEM では、言語はページ言語またはユーザー言語のどちらかから取得できます。
JSPでページ言語を取得するには:
currentPage.getLanguage(false)
JSPでユーザー言語を取得するには:
slingRequest.getLocale()
currentPage
および slingRequest
は、<cq:definedObjects> タグを介して JSP で使用できます。
タグ付けの場合、ローカライズはコンテキストに依存します。タグの titles
はページ言語、ユーザー言語またはそれ以外の任意の言語で表示することができます。
次の手順では、タグ編集ダイアログに新しい言語(フィンランド語)を追加する方法を説明します。
CRXDEで、ノード/content/cq:tags
の複数値のプロパティlanguages
を編集します。
追加fi_fi
— フィンランド語のロケールを表し、変更を保存します。
新しい言語(フィンランド語)が、ページプロパティのタグダイアログと、タグ付けコンソールでタグを編集する際のタグの編集ダイアログで使用できるようになりました。
新しい言語は、AEMで認識される言語の1つである必要があります。つまり、/libs/wcm/core/resources/languages
の下のノードとして使用できる必要があります。