Dans un contexte de programmation par balises ou d’extension de balises dans une application AEM personnalisée, cette page décrit l’utilisation de
qui interagit avec le
Pour plus d’informations sur le balisage, voir :
L’implémentation du framework de balisage dans AEM permet la gestion des balises et du contenu des balises à l’aide de l’API JCR. TagManager garantit que les balises entrées en tant que valeurs sur la propriété de tableau de chaînes cq:tags
ne sont pas dupliquées. Il supprime les TagID pointant vers des balises non existantes et met à jour les TagID pour les balises déplacées ou fusionnées. TagManager utilise un écouteur d’observation JCR qui annule les modifications incorrectes. Les principales classes sont stockées dans le modules com.day.cq.tagging :
TagManager
. C’est l’implémentation de référence de l’API de balisage.TagManager
- permet de résoudre et de créer des balises par chemins et noms.Tag
- définit l’objet tag.Pour récupérer une instance de TagManager, vous devez disposer d’une Session
JRC et appeler getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
Dans le contexte standard de Sling, vous pouvez également effectuer une adaptation à un TagManager
à partir du ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Vous pouvez récupérer une balise Tag
par l'intermédiaire de TagManager
, soit en résolvant une balise existante, soit en en en créant une nouvelle :
Tag tag = tagManager.resolve("my/tag"); // for existing tags
Tag tag = tagManager.createTag("my/tag"); // for new tags
Pour l’implémentation basée sur JCR, qui mappe Tags
sur JCR Nodes
, vous pouvez directement utiliser le mécanisme adaptTo
de Sling si vous disposez de la ressource (par exemple /content/cq:tags/default/my/tag
) :
Tag tag = resource.adaptTo(Tag.class);
Bien qu’une balise ne puisse être convertie que *à partir d’une ressource (et non d’un noeud), une balise peut être convertie *en *à la fois un noeud et une ressource :
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
L'adaptation directe de Node
à Tag
n'est pas possible, car Node
n'implémente pas la méthode Sling Adaptable.adaptTo(Class)
.
// 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);
RangeIterator
valide à utiliser :
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
Il est possible d’utiliser le service de réplication (Replicator
) avec des balises dans la mesure où elles sont de type nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
CQ.tagging.TagInputField
est un widget de formulaire qui permet de saisir des balises. Il dispose d’un menu contextuel permettant de faire une sélection parmi les balises existantes, et inclut la saisie semi-automatique, ainsi que bien d’autres fonctions. Son xtype est tags
.
Le récupérateur de balises est un service d’arrière-plan qui nettoie les balises qui sont masquées et inutilisées. Les balises masquées et inutilisées sont des balises inférieures à /content/cq:tags
qui possèdent une propriété cq:movedTo
et ne sont pas utilisées sur un noeud de contenu ; elles ont un nombre égal à zéro. Avec ce processus de suppression à l’arrière-plan, le nœud de contenu (c’est-à-dire la propriété cq:tags
) n’a pas besoin d’être mis à jour lors du déplacement ou de la fusion. Les références de la propriété cq:tags
sont automatiquement mises à jour lorsque la propriété cq:tags
est mise à jour, par ex. via la boîte de dialogue des propriétés de la page.
Le Tag Garbage Collector s’exécute par défaut une fois par jour. Cette fréquence peut être configurée sur :
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
La recherche de balises et le listing des balises fonctionnent comme suit :
La recherche de TagID recherche les balises pour lesquelles la propriété cq:movedTo
est définie sur TagID et suit l'ensemble des balises cq:movedTo
TagID.
La recherche du titre de la balise recherche uniquement les balises qui ne possèdent pas de propriété cq:movedTo
.
Comme décrit dans la documentation relative à l’administration des balises, dans la section Gestion des balises dans différentes langues, une balise title
peut être définie dans différentes langues. Une propriété sensible à la langue est ensuite ajoutée au nœud de la balise. Cette propriété a le format jcr:title.<locale>
, par ex. jcr:title.fr
pour la traduction française. <locale>
doit être une chaîne de paramètres régionaux ISO en minuscules et utiliser "_" au lieu de "-", par exemple : de_ch
.
Lorsque la balise Animaux est ajoutée à la page Produits, la valeur stockphotography:animals
est ajoutée à la propriété cq:tags
du noeud /content/geometrixx/fr/products/jcr:content. La traduction est référencée à partir du nœud de balise.
L’API côté serveur a localisé des méthodes liées à title
:
Dans AEM, la langue peut être identifiée à partir de la langue de la page ou de la langue de l’utilisateur :
pour récupérer la langue de la page dans une JSP :
currentPage.getLanguage(false)
pour récupérer la langue de l’utilisateur dans une JSP :
slingRequest.getLocale()
currentPage
et slingRequest
sont disponibles dans une JSP via la balise <cq:definedObjects>.
Pour le balisage, la localisation dépend du contexte, car la balise titles
peut être affichée dans la langue de la page, dans la langue de l’utilisateur ou dans toute autre langue.
La procédure suivante décrit comment ajouter une langue (finnois) à la boîte de dialogue Modifier la balise :
Dans CRXDE, modifiez la propriété à plusieurs valeurs languages
du noeud /content/cq:tags
.
Ajoutez fi_fi
(code langue pour le finlandais) et enregistrez les modifications.
La nouvelle langue (finnois) est désormais disponible dans la boîte de dialogue des propriétés de la page et dans la boîte de dialogue Modifier la balise lors de la modification d’une balise dans la console Balisage.
La nouvelle langue doit faire partie de celles reconnues par AEM, c’est-à-dire qu’elle doit être disponible sous /libs/wcm/core/resources/languages
.