Para trabajar mediante programación con etiquetas o ampliar etiquetas dentro de una aplicación de AEM personalizada, este documento describe el uso de la variable
que interactúa con el
Para información relacionada con el etiquetado:
La aplicación del marco de etiquetado en AEM permite la administración de etiquetas y contenido de etiquetas mediante la API de JCR. TagManager
garantiza que las etiquetas se introduzcan como valores en la variable cq:tags
la propiedad matriz de cadenas no está duplicada, elimina TagID
s señala a etiquetas y actualizaciones no existentes TagID
s para etiquetas movidas o combinadas. TagManager
utiliza un oyente de observación JCR que revierte cualquier cambio incorrecto. Las clases principales se encuentran en la com.day.cq.tagging paquete:
JcrTagManagerFactory
- devuelve una implementación basada en JCR de un TagManager
. Es la implementación de referencia de la API de etiquetado.TagManager
: permite resolver y crear etiquetas por rutas y nombres.Tag
- define el objeto tag .Para recuperar un TagManager
, debe tener un JCR Session
y para llamar a getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
En el contexto típico de Sling, también puede adaptarse a un TagManager
de la variable ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
A Tag
se puede recuperar mediante la variable TagManager
, resolviendo una etiqueta existente o creando una nueva:
Tag tag = tagManager.resolve("my/tag"); // for existing tags
Tag tag = tagManager.createTag("my/tag"); // for new tags
Para la implementación basada en JCR, que asigna Tags
en JCR Nodes
, puede utilizar directamente el adaptTo
mecanismo si tiene el recurso (por ejemplo, /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Mientras que una etiqueta solo puede convertirse from un recurso (no un nodo), una etiqueta puede convertirse a un nodo y un recurso:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Adaptación directa desde Node
a Tag
no es posible, porque Node
no implementa el Sling Adaptable.adaptTo(Class)
método.
// 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);
El RangeIterator
para usar es:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
Es posible utilizar el servicio de replicación (Replicator
) con etiquetas porque las etiquetas son de tipo nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
El recolector de residuos de etiquetas es un servicio de fondo que limpia las etiquetas que están ocultas y que no se utilizan. Las etiquetas ocultas y no utilizadas son las siguientes /content/cq:tags
que tienen un cq:movedTo
y no se utilizan en un nodo de contenido. Tienen un recuento de cero. Al utilizar este proceso de eliminación diferido, el nodo de contenido (es decir, el cq:tags
) no tiene que actualizarse como parte de la operación move o merge . Las referencias en la variable cq:tags
se actualiza automáticamente cuando cq:tags
se actualiza, por ejemplo, a través del cuadro de diálogo de propiedades de página.
El recolector de residuos de etiquetas se ejecuta de forma predeterminada una vez al día. Esto se puede configurar en:
http://<host>:<port>/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
La búsqueda de etiquetas y la lista de etiquetas funcionan de la siguiente manera:
TagID
busca las etiquetas que tienen la propiedad cq:movedTo
configure como TagID
y sigue la cq:movedTo
TagID
s.cq:movedTo
propiedad.Una etiqueta title
puede definirse en diferentes idiomas. A continuación, se agrega una propiedad que distingue entre idiomas al nodo de etiqueta . Esta propiedad tiene el formato jcr:title.<locale>
, por ejemplo, jcr:title.fr
para la traducción al francés. <locale>
debe ser una cadena de configuración regional ISO en minúscula y usar un guion bajo (_
) en lugar de guión (-
), por ejemplo: de_ch
.
Por ejemplo, cuando la variable Animales se agrega a la variable Productos page, el valor stockphotography:animals
se añade a la propiedad cq:tags
del nodo /content/wknd/en/products/jcr:content
. Se hace referencia a la traducción desde el nodo tag .
La API del lado del servidor se ha localizado title
Métodos relacionados:
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 locale)
createTagByTitle(String tagTitlePath, Locale locale)
resolveByTitle(String tagTitlePath, Locale locale)
En AEM, el idioma se puede obtener desde el idioma de la página o desde el idioma del usuario.
Para el etiquetado, la localización depende del contexto como etiqueta titles
se puede mostrar en el idioma de la página, en el idioma del usuario o en cualquier otro idioma.
El siguiente procedimiento describe cómo añadir un nuevo idioma (por ejemplo, finés) al Edición de etiquetas diálogo:
languages
del nodo /content/cq:tags
.fi_fi
, que representa la configuración regional finlandesa, y guarde los cambios.El finés ahora está disponible en el cuadro de diálogo de etiquetas de las propiedades de página y en el Editar etiqueta al editar una etiqueta en el Etiquetado consola.
El nuevo idioma debe ser uno de los idiomas AEM reconocidos, es decir, debe estar disponible como nodo a continuación /libs/wcm/core/resources/languages
.