Creazione di tag nelle applicazioni AEM

Per utilizzare in modo programmatico i tag o estenderli all'interno di un'applicazione AEM personalizzata, in questo documento viene descritto l'utilizzo del

che interagisce con il

Per ulteriori informazioni sui tag:

  • Per informazioni sull'assegnazione di tag ai contenuti come autori di contenuti, consultate Utilizzo di tag.
  • Consultate Amministrazione dei tag per la prospettiva dell’amministratore sulla creazione e gestione dei tag, nonché per informazioni sui tag di contenuto applicati.

Panoramica dell'API Tagging

L'implementazione del framework di tag in AEM consente la gestione di tag e contenuti di tag mediante l'API JCR. TagManager assicura che i tag immessi come valori nella proprietà della matrice di cq:tags stringhe non vengano duplicati, TagIDche rimuoverà puntando a tag e aggiornamenti non esistenti TagIDper i tag spostati o uniti. TagManager utilizza un listener di osservazione JCR che ripristina le modifiche non corrette. Le classi principali si trovano nel pacchetto com.day.cq.tagging:

  • JcrTagManagerFactory - restituisce un'implementazione JCR di un TagManager. È l’implementazione di riferimento dell’API Tagging.
  • TagManager - consente di risolvere e creare tag in base a percorsi e nomi.
  • Tag - definisce l'oggetto tag.

Ottenimento di un gestore di tag basato su JCR

Per recuperare un'istanza TagManager, è necessario disporre di un JCR Session e chiamare getTagManager(Session):

@Reference
JcrTagManagerFactory jcrTagManagerFactory;

TagManager tagManager = jcrTagManagerFactory.getTagManager(session);

Nel contesto Sling tipico è anche possibile adattarsi a un TagManager dal ResourceResolver:

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

Recupero di un oggetto Tag

È possibile recuperare un Tag tramite TagManager, risolvendo un tag esistente o creandone uno nuovo:

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

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

Per l'implementazione basata su JCR, che esegue il mapping di Tags su JCR Nodes, è possibile utilizzare direttamente il meccanismo di Sling adaptTo se si dispone della risorsa (ad esempio, /content/cq:tags/default/my/tag):

Tag tag = resource.adaptTo(Tag.class);

Mentre un tag può essere convertito solo da una risorsa (non da un nodo), un tag può essere convertito in un nodo e una risorsa:**

Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
NOTA

L'adattamento diretto da Node a Tag non è possibile, perché Node non implementa il metodo Sling Adaptable.adaptTo(Class).

Ottenimento e impostazione dei tag

// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);

// Setting tags to a Resource:
tagManager.setTags(resource, tags);

Ricerca di tag

// 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);
NOTA

La RangeIterator valida da utilizzare è:

com.day.cq.commons.RangeIterator

Eliminazione dei tag

tagManager.deleteTag(tag);

Replica dei tag

È possibile utilizzare il servizio di replica (Replicator) con i tag perché i tag sono di tipo nt:hierarchyNode:

replicator.replicate(session, replicationActionType, tagPath);

Tag Garbage Collector

Il Garbage Collector tag è un servizio di sfondo che pulisce i tag nascosti e inutilizzati. I tag nascosti e inutilizzati sono tag inferiori a /content/cq:tags che hanno una proprietà cq:movedTo e non sono utilizzati su un nodo di contenuto. Hanno un conteggio pari a zero. Utilizzando questo processo di eliminazione pigra, il nodo di contenuto (ovvero la proprietà cq:tags) non deve essere aggiornato come parte dell'operazione di spostamento o unione. I riferimenti nella proprietà cq:tags vengono aggiornati automaticamente quando la proprietà cq:tags viene aggiornata, ad esempio tramite la finestra di dialogo delle proprietà della pagina.

Per impostazione predefinita, il Garbage Collector tag viene eseguito una volta al giorno. È possibile configurare in:

http://<host>:<port>/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector

Ricerca tag ed Elenco tag

La ricerca di tag e l’elenco dei tag funzionano come segue:

  • La ricerca di TagID cerca i tag per i quali la proprietà cq:movedTo è impostata su TagID e segue attraverso cq:movedTo TagIDs.
  • La ricerca del titolo del tag cerca solo i tag privi di proprietà cq:movedTo.

Tag in diverse lingue

Un tag title può essere definito in diverse lingue. Al nodo del tag viene quindi aggiunta una proprietà sensibile alla lingua. Questa proprietà ha il formato jcr:title.<locale>, ad esempio jcr:title.fr per la traduzione in francese. <locale> deve essere una stringa di lingua ISO in lettere minuscole e utilizzare carattere di sottolineatura (_) invece di trattino/trattino (-), ad esempio: de_ch.

Ad esempio, quando il tag Animals viene aggiunto alla pagina Products, il valore stockphotography:animals viene aggiunto alla proprietà cq:tags del nodo /content/wknd/en/products/jcr:content. Il nodo del tag fa riferimento alla traduzione.

L'API lato server include metodi title localizzati:

  • 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)

In AEM, la lingua può essere ottenuta dalla lingua della pagina o dalla lingua dell’utente.

Per i tag, la localizzazione dipende dal contesto in cui è possibile visualizzare il tag titles nella lingua della pagina, nella lingua dell’utente o in qualsiasi altra lingua.

Aggiunta di una nuova lingua alla finestra di dialogo Modifica tag

La procedura seguente descrive come aggiungere una nuova lingua (ad esempio il finlandese) alla finestra di dialogo Modifica tag:

  1. In CRXDE, modificare la proprietà multi-valore languages del nodo /content/cq:tags.
  2. Aggiungete fi_fi, che rappresenta l'impostazione internazionale finlandese, e salvate le modifiche.

Il finlandese è ora disponibile nella finestra di dialogo dei tag delle proprietà della pagina e nella finestra di dialogo Edit Tag quando si modifica un tag nella console Tagging.

NOTA

La nuova lingua deve essere una delle AEM lingue riconosciute, ovvero deve essere disponibile come nodo sotto /libs/wcm/core/resources/languages.

In questa pagina