Creazione di tag in un’applicazione AEM

Per utilizzare in modo programmatico i tag o estenderli all’interno di un’applicazione AEM personalizzata, questa pagina descrive l’utilizzo del

che interagisce con il

Per ulteriori informazioni sui tag, vedere:

Panoramica dell’API Tagging

L’implementazione del framework di tag in AEM consente di gestire tag e contenuti tag mediante l’API JCR. TagManager assicura che i tag immessi come valori nella proprietà dell'array di cq:tags stringhe non vengano duplicati, rimuove gli ID di tag che puntano a tag non esistenti e aggiorna gli ID di tag per 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 tipico contesto Sling è anche possibile adattarsi a un TagManager da ResourceResolver:

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

Ottenimento di un oggetto Tag

Un Tag può essere recuperato 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 viene mappata Tags su JCR Nodes, potete utilizzare direttamente il adaptTo meccanismo di Sling se disponete 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 un nodo), un tag può essere convertito *in *sia un nodo che 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 Adaptable.adaptTo(Class) metodo Sling.

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 valida RangeIterator 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);

Assegnazione di tag sul lato client

CQ.tagging.TagInputField è un widget modulo per l’immissione di tag. Dispone di un menu a comparsa per la selezione tra i tag esistenti, include il completamento automatico e molte altre funzioni. Il suo xtype è tags.

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 sottostanti /content/cq:tags che hanno una cq:movedTo proprietà e non vengono utilizzati su un nodo di contenuto; il conteggio è pari a zero. Utilizzando questo processo di eliminazione pigra, il nodo di contenuto (ovvero la cq:tags proprietà) non deve essere aggiornato come parte dell'operazione di spostamento o unione. I riferimenti nella cq:tags proprietà vengono aggiornati automaticamente quando la cq:tags proprietà 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://localhost:4502/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 la cui proprietà è cq:movedTo impostata su TagID e segue gli cq:movedTo ID tag.

  • La ricerca di Titolo tag cerca solo i tag privi di cq:movedTo proprietà.

Tags in Different Languages

Come descritto nella documentazione relativa all’amministrazione dei tag, nella sezione Gestione dei tag in linguediverse titleè possibile definire un tag in lingue diverse. 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 francese. <locale> Deve essere una stringa di lingua ISO in lettere minuscole e utilizzare "_" invece di "-", ad esempio: de_ch.

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

L'API lato server presenta metodi titlecorrelati localizzati:

  • com.day.cq.tagging.Tag

    • getLocalizedTitle(Impostazioni internazionali)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(Impostazioni internazionali)
    • getTitlePath(Impostazioni internazionali)
  • com.day.cq.tagging.TagManager

    • canCreateTagByTitle(String tagTitlePath, Locale)
    • createTagByTitle(String tagTitlePath, Locale)
    • resolveByTitle(String tagTitlePath, locale)

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

  • per recuperare la lingua della pagina in una JSP:

    • currentPage.getLanguage(false)
  • per recuperare la lingua utente in una JSP:

    • slingRequest.getLocale()

currentPage e slingRequest sono disponibili in una JSP tramite il tag <cq:definedObjects> .

Per i tag, la localizzazione dipende dal contesto in cui i tag titlespossono essere visualizzati 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 (finlandese) alla finestra di dialogo Modifica ​tag:

  1. In CRXDE, modificare la proprietà multivalore languages del nodo /content/cq:tags.

  2. Aggiungete fi_fi - che rappresenta l'impostazione internazionale finlandese - e salvate le modifiche.

La nuova lingua (finlandese) è ora disponibile nella finestra di dialogo dei tag delle proprietà della pagina e nella finestra di dialogo Modifica tag quando si modifica un tag nella console Tag .

Nota

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

In questa pagina