将标记构建到AEM应用程序 building-tagging-into-an-aem-application

CAUTION
AEM 6.4已结束扩展支持,本文档将不再更新。 有关更多详细信息,请参阅 技术支助期. 查找支持的版本 此处.

为了以编程方式在自定义AEM应用程序中使用标记或扩展标记,本页介绍了

有关标记的相关信息,请参阅:

  • 管理标记 有关创建和管理标记以及已对哪些内容应用标记的信息。
  • 使用标记 以了解有关标记内容的信息。

标记API概述 overview-of-the-tagging-api

实施 标记框架 在AEM中,允许使用JCR API管理标记和标记内容。 TagManager确保在 cq:tags 字符串数组属性不会重复,它会删除指向非现有标记的TagID,并更新已移动或合并标记的TagID。 TagManager使用JCR观察侦听器来还原任何不正确的更改。 主类位于 com.day.cq.tagging 包:

  • JcrTagManagerFactory — 返回基于JCR的 TagManager. 它是标记API的参考实施。
  • TagManager — 允许按路径和名称解析和创建标记。
  • Tag — 定义标记对象。

获取基于JCR的TagManager getting-a-jcr-based-tagmanager

要检索TagManager实例,您需要具有JCR SessiongetTagManager(Session):

@Reference
JcrTagManagerFactory jcrTagManagerFactory;

TagManager tagManager = jcrTagManagerFactory.getTagManager(session);

在典型的Sling上下文中,您还可以根据 TagManagerResourceResolver:

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

检索标记对象 retrieving-a-tag-object

A Tag 可通过 TagManager,方法是解析现有标记或创建新标记:

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

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

对于基于JCR的实施,该实施映射 Tags 到JCR Nodes,您可以直接使用 adaptTo 机制(例如, /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);
NOTE
直接从 Node to Tag 不可能,因为 Node 不实施Sling Adaptable.adaptTo(Class) 方法。

获取和设置标记 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);
NOTE
有效 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

标记垃圾回收器是一项后台服务,可清理隐藏和未使用的标记。 隐藏和未使用的标记如下所示 /content/cq:tags 具有 cq:movedTo 属性和中未在内容节点上使用 — 它们的计数为零。 通过使用此延迟删除过程,内容节点(即 cq:tags 属性),则无需在移动或合并操作中进行更新。 中的引用 cq:tags 属性会在 cq:tags 属性会进行更新,例如通过页面属性对话框。

标记垃圾收集器默认每天运行一次。 可在以下位置进行配置:

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

标记搜索和标记列表 tag-search-and-tag-listing

搜索标记和标记列表的工作方式如下:

  • 搜索TagID会搜索具有属性的标记 cq:movedTo 设置为TagID并跟踪 cq:movedTo 标记ID。

  • 搜索标记标题仅会搜索没有 cq:movedTo 属性。

不同语言的标记 tags-in-different-languages

如管理标记的文档中的部分所述 管理不同语言的标记,标记 title可以定义不同语言。 然后,会将语言敏感属性添加到标记节点。 此属性的格式 jcr:title.<locale>,例如 jcr:title.fr 翻译法文。 <locale> 必须是小写的ISO区域设置字符串,并使用“_”而不是“ — ”,例如: de_ch.

动物 标记会添加到 产品 页面,值 stockphotography:animals 会添加到资产中 cq:tags /content/geometrixx/en/products/jcr:content节点的。 转换从标记节点引用。

服务器端API已本地化 title-related方法:

  • com.day.cq.tagging.Tag

    • getLocalizedTitle(区域设置)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(区域设置)
    • getTitlePath(区域设置)
  • com.day.cq.tagging.TagManager

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

在AEM中,可以从页面语言或用户语言获取语言:

  • 要在JSP中检索页面语言,请执行以下操作:

    • currentPage.getLanguage(false)
  • 要在JSP中检索用户语言,请执行以下操作:

    • slingRequest.getLocale()

currentPageslingRequest 在JSP中,可通过 <cq:definedobjects> 标记。

对于标记,本地化取决于作为标记的上下文 titles可以以页面语言、用户语言或任何其他语言显示。

向“编辑标记”对话框添加新语言 adding-a-new-language-to-the-edit-tag-dialog

以下过程介绍如何向 标记编辑 对话框:

  1. CRXDE,编辑多值属性 languages/content/cq:tags.

  2. 添加 fi_fi — 表示芬兰语区域设置 — 并保存更改。

新语言(芬兰语)现在在页面属性的标记对话框和 编辑标记 对话框中编辑标记时 标记 控制台。

NOTE
新语言必须是AEM认可的语言之一,即需要作为下面的节点提供 /libs/wcm/core/resources/languages.
recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e