Creación del etiquetado en una aplicación AEM building-tagging-into-an-aem-application
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 :
- Administración de etiquetas para obtener información sobre la creación y administración de etiquetas, así como sobre las etiquetas de contenido que se han aplicado.
- Uso de etiquetas para obtener información sobre el etiquetado de contenido.
Información general sobre la API de etiquetado overview-of-the-tagging-api
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:
- JcrTagManagerFactory: devuelve una implementación basada en JCR de una
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 .
Obtención de un TagManager basado en JCR getting-a-jcr-based-tagmanager
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);
Recuperación de un objeto Tag retrieving-a-tag-object
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);
Node
a Tag
no es posible, porque Node
no implementa el Sling Adaptable.adaptTo(Class)
método.Obtención y configuración de etiquetas getting-and-setting-tags
// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);
// Setting tags to a Resource:
tagManager.setTags(resource, tags);
Búsqueda de etiquetas 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
para usar es:com.day.cq.commons.RangeIterator
Eliminación de etiquetas deleting-tags
tagManager.deleteTag(tag);
Duplicación de etiquetas replicating-tags
Es posible utilizar el servicio de replicación ( Replicator
) con etiquetas porque las etiquetas son de tipo nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
Etiquetado en el lado del cliente tagging-on-the-client-side
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 the-tag-garbage-collector
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
Búsqueda de etiquetas y Lista de etiquetas tag-search-and-tag-listing
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 variablecq:movedTo
TagID. -
La búsqueda de Título de etiqueta solo busca las etiquetas que no tienen un
cq:movedTo
propiedad.
Etiquetas en diferentes idiomas tags-in-different-languages
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:
-
- getLocalizedTitle(Configuración regional)
- getLocalizedTitlePaths()
- getLocalizedTitles()
- getTitle(Configuración regional)
- getTitlePath(configuración regional)
-
- canCreateTagByTitle(String tagTitlePath, configuración regional)
- createTagByTitle(String tagTitlePath, configuración regional)
- resolveByTitle(String tagTitlePath, configuración regional)
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.
Adición de un nuevo idioma al cuadro de diálogo Editar etiqueta adding-a-new-language-to-the-edit-tag-dialog
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.
/libs/wcm/core/resources/languages
.