Per lavorare in modo programmatico con i tag o estenderli all’interno di un’applicazione AEM personalizzata, questa pagina descrive l’utilizzo di
che interagisce con il
Per informazioni correlate sull’assegnazione tag, consulta:
L'attuazione del framework di assegnazione tag in AEM consente la gestione di tag e contenuti tag utilizzando l’API JCR. TagManager garantisce che i tag immessi come valori sul cq:tags
La proprietà string array non è duplicata, rimuove i TagID che puntano a tag non esistenti e aggiorna i TagID per i tag spostati o uniti. TagManager utilizza un listener di osservazione JCR che ripristina eventuali modifiche non corrette. Le classi principali sono com.day.cq.tagging pacchetto:
TagManager
. È l’implementazione di riferimento dell’API di assegnazione tag.TagManager
: consente di risolvere e creare tag in base a percorsi e nomi.Tag
: definisce l’oggetto tag.Per recuperare un’istanza di TagManager, è necessario disporre di un JCR Session
e chiamare getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
Nel tipico contesto Sling, puoi anche adattarti a una TagManager
dal ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
A Tag
possono essere recuperati tramite TagManager
, risolvendo un tag esistente o creandone uno:
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 mappa Tags
su JCR Nodes
, puoi utilizzare direttamente 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 un nodo), un tag può essere convertito *sia in un nodo che in una risorsa:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Adattamento diretto da Node
a Tag
non è possibile, perché Node
non implementa Sling Adaptable.adaptTo(Class)
metodo.
// 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);
Il valore RangeIterator
da utilizzare è:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
È possibile utilizzare il servizio di replica ( Replicator
) con tag perché i tag sono di tipo nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
Widget modulo CQ.tagging.TagInputField
è per l’immissione di tag. Dispone di un menu a comparsa per selezionare da tag esistenti, include il completamento automatico e molte altre funzioni. Il suo xtype è tags
.
Il garbage collector dei tag è un servizio in background che consente di pulire i tag nascosti e non utilizzati. Di seguito sono riportati i tag nascosti e non utilizzati /content/cq:tags
che hanno un cq:movedTo
e non vengono utilizzati in un nodo di contenuto, poiché hanno un conteggio pari a zero. Utilizzando questo processo di eliminazione lenta, il nodo del contenuto (ovvero cq:tags
) non deve essere aggiornata come parte dell’operazione di spostamento o unione. I riferimenti in cq:tags
vengono aggiornate automaticamente quando cq:tags
viene aggiornata, ad esempio, tramite la finestra di dialogo proprietà pagina.
Il garbage collector dei tag viene eseguito per impostazione predefinita una volta al giorno. Puoi configurarlo in:
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
La ricerca dei tag e l’elenco dei tag funzionano come segue:
La ricerca di TagID cerca i tag che hanno la proprietà cq:movedTo
impostato su TagID e segue attraverso cq:movedTo
TagID.
La ricerca di Titolo tag cerca solo i tag che non hanno un cq:movedTo
proprietà.
Come descritto nella documentazione per l’amministrazione dei tag, nella sezione Gestione dei tag in lingue diverse, un tag title
possono essere definiti 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 francese. Il <locale>
deve essere una stringa internazionale ISO minuscola e utilizzare "_" invece di "-", ad esempio: de_ch
.
Quando Animali viene aggiunto al tag Prodotti pagina, il valore stockphotography:animals
viene aggiunto alla proprietà cq:tags
del nodo /content/geometrixx/en/products/jcr:content. Viene fatto riferimento alla traduzione dal nodo del tag.
L’API lato server ha localizzato title
Metodi relativi a:
In AEM, la lingua può essere ottenuta o 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()
Il currentPage
e slingRequest
sono disponibili in una JSP tramite <cq:definedobjects> tag.
Per i tag, la localizzazione dipende dal contesto come tag titles
può essere visualizzata nella lingua della pagina, nella lingua dell’utente o in qualsiasi altra lingua.
Nella procedura seguente viene descritto come aggiungere una lingua (finlandese) al Modifica tag finestra di dialogo:
In entrata CRXDE, modifica la proprietà con più valori languages
del nodo /content/cq:tags
.
Aggiungi fi_fi
- che rappresenta la lingua finlandese - e salvare le modifiche.
La nuova lingua (finlandese) è ora disponibile nella finestra di dialogo dei tag delle proprietà della pagina e nel Modifica tag durante la modifica di un tag in Assegnazione tag console.
La nuova lingua deve essere una delle lingue riconosciute dall'AEM. In altre parole, deve essere disponibile come nodo sotto /libs/wcm/core/resources/languages
.
L’installazione di un service pack reimposta la proprietà Languages del nodo /content/cq:tags sui valori predefiniti. Pertanto, è necessario aggiungerlo dalle proprietà prima dell’installazione.