AEM アプリケーションへのタグ付けの構築 building-tagging-into-an-aem-application
このページでは、カスタムAEMアプリケーション内のタグや拡張タグをプログラムで操作する目的で、
これは、次とやり取りします。
タグに関する関連情報については、次を参照してください。
タグ付け API の概要 overview-of-the-tagging-api
AEM のタグ付けフレームワークの実装により、JCR API を使用してタグおよびタグコンテンツを管理できます。TagManager は、cq:tags
文字列配列プロパティに値として入力されたタグが重複しないようにして、存在しないタグを指している TagID を削除し、移動または結合されたタグの TagID を更新してください。TagManager は、間違った変更を元に戻す JCR 監視リスナーを使用します。メインクラスは com.day.cq.tagging パッケージ内にあります。
- JcrTagManagerFactory -
TagManager
の JCR ベースの実装を返します。タグ付け API のリファレンス実装です。 TagManager
- パスと名前を使用して、タグを解決して作成できます。Tag
- タグオブジェクトを定義します。
JCR ベースの TagManager の取得 getting-a-jcr-based-tagmanager
TagManager インスタンスを取得するには、JCR Session
を取得して getTagManager(Session)
を呼び出す必要があります。
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
通常の Sling コンテキストでは、TagManager
を ResourceResolver
に適合させることもできます。
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Tag オブジェクトの取得 retrieving-a-tag-object
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);
タグは、ノードからではなく、*リソース *からのみ変換できますが、ノードとリソースの両方に変換できます。
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Node
は Sling の Adaptable.adaptTo(Class)
メソッドを実装しないので、Node
を Tag
に直接適合させることはできません。タグの取得と設定 getting-and-setting-tags
// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);
// Setting tags to a Resource:
tagManager.setTags(resource, tags);
タグの検索 searching-for-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
タグの削除 deleting-tags
tagManager.deleteTag(tag);
タグの複製 replicating-tags
タグのタイプは Replicator
なので、タグで複製サービス(nt:hierarchyNode
)を使用できます。
replicator.replicate(session, replicationActionType, tagPath);
クライアント側でのタグ付け tagging-on-the-client-side
CQ.tagging.TagInputField
は、タグを入力するためのフォームウィジェットです。既存のタグから選択できるポップアップメニューを備えており、自動入力などの機能もあります。xtype は tags
です。
タグのガベージコレクター the-tag-garbage-collector
タグのガベージコレクターは、非表示および未使用のタグをクリーンアップするバックグラウンドサービスです。非表示および未使用のタグとは、cq:movedTo
プロパティが設定された/content/cq:tags
の下にあるタグのことで、コンテンツノードでは使用されません(カウントはゼロになります)。この遅延削除プロセスを使用すると、移動や結合操作の一環としてコンテンツノード(cq:tags
プロパティ)をアップデートする必要がありません。cq:tags
プロパティの参照は、cq:tags
プロパティがアップデートされると自動的にアップデートされます(例:ページプロパティダイアログを介して)。
タグのガベージコレクターは、デフォルトで 1 日に 1 回実行されます。これは、次の場所で設定できます。
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
タグ検索およびタグ一覧 tag-search-and-tag-listing
タグ検索およびタグ一覧は次のように動作します。
-
TagID の検索では、
cq:movedTo
プロパティが TagID に設定されているタグを検索します。cq:movedTo
の TagID に従って検索します。 -
タグタイトルの検索では、
cq:movedTo
プロパティのないタグのみを検索します。
他の言語のタグ tags-in-different-languages
タグの管理に関するドキュメントの他の言語でのタグ管理の節で説明されているように、タグの title
は別の言語で定義できます。言語に依存するプロパティがタグノードに追加されます。このプロパティは jcr:title.<locale>
の形式を持ちます(例:フランス語訳は jcr:title.fr
)<locale>
は、小文字の ISO ロケール文字列で、「-」ではなく「_」を使用する必要があります(例:de_ch
)。
Animals タグが Products ページに追加されると、値 stockphotography:animals
は /content/geometrixx/en/products/jcr:content ノードの cq:tags
プロパティに追加されます。翻訳は、タグノードから参照されます。
サーバーサイド API には、ローカライズされた title
関連のメソッドがあります。
-
- getLocalizedTitle(Locale locale)
- getLocalizedTitlePaths()
- getLocalizedTitles()
- getTitle(Locale locale)
- getTitlePath(Locale locale)
-
- canCreateTagByTitle(String tagTitlePath, Locale 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
はページ言語、ユーザー言語またはそれ以外の任意の言語で表示することができます。
タグを編集ダイアログへの新しい言語の追加 adding-a-new-language-to-the-edit-tag-dialog
次の手順では、新しい言語(フィンランド語)を タグを編集 ダイアログに追加する方法を説明します。
-
CRXDE で、ノード
/content/cq:tags
の複数値プロパティlanguages
を編集します。 -
フィンランド語のロケールを表す
fi_fi
を追加して、変更を保存してください。
タグ付け コンソールでタグを編集する際に、ページプロパティタグダイアログと タグを編集 ダイアログで、新しい言語(フィンランド語)を使用できるようになりました。
/libs/wcm/core/resources/languages
の下でノードとして使用できる必要があります。