Con el fin de trabajar mediante programación con etiquetas o ampliar las etiquetas dentro de una aplicación de AEM personalizada, esta página describe el uso de la variable
que interactúa con el
Para obtener información relacionada con el etiquetado, consulte :
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 introducidas como valores en la variable cq:tags
la propiedad matriz de cadenas no está duplicada, elimina los TagID que apuntan a etiquetas no existentes y actualiza los TagID para etiquetas combinadas o movidas. 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:
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 una instancia de 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 (p. ej., /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Aunque una etiqueta solo se puede convertir *desde *un recurso (no un nodo), una etiqueta se puede convertir *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);
CQ.tagging.TagInputField
es un widget de formulario para introducir etiquetas. Tiene un menú emergente para seleccionar etiquetas existentes, incluye el completado automático y muchas otras funciones. Su xtype es tags
.
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://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
La búsqueda de etiquetas y la lista de etiquetas funcionan de la siguiente manera:
La búsqueda de TagID busca las etiquetas que tienen la propiedad cq:movedTo
se establece en TagID y realiza el seguimiento de la variable cq:movedTo
TagID.
La búsqueda de Título de etiqueta solo busca las etiquetas que no tienen un cq:movedTo
propiedad.
Como se describe en la documentación para la administración de etiquetas, en la sección Administración de etiquetas en diferentes idiomas, 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>
, p. ej. jcr:title.fr
para la traducción al francés. <locale>
debe ser una cadena de configuración regional ISO en minúscula y utilizar "_" en lugar de "-", por ejemplo: de_ch
.
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/geometrixx/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:
En AEM, el idioma se puede obtener desde el idioma de la página o desde el idioma del usuario:
para recuperar el idioma de la página en un JSP:
currentPage.getLanguage(false)
para recuperar el idioma del usuario en un JSP:
slingRequest.getLocale()
currentPage
y slingRequest
están disponibles en un JSP a través de la variable <cq:definedobjects> etiqueta.
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 agregar un nuevo idioma (finés) al Edición de etiquetas diálogo:
En CRXDE, editar la propiedad de varios valores languages
del nodo /content/cq:tags
.
Agregar fi_fi
- que representa la configuración regional finlandesa - y guarde los cambios.
El nuevo idioma (finés) ya está disponible en el cuadro de diálogo de etiquetas de las propiedades de página y en la 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
.