Show Menu
ARGOMENTI×

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

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

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 lingue diverse 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 title correlati localizzati:
    • getLocalizedTitle(Impostazioni internazionali)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(Impostazioni internazionali)
    • getTitlePath(Impostazioni internazionali)
    • 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 titles possono 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 .
La nuova lingua deve essere una delle lingue riconosciute da AEM, ovvero deve essere disponibile come nodo sottostante /libs/wcm/core/resources/languages .