Tags maken in een AEM toepassing building-tagging-into-an-aem-application
Voor het programmatisch werken met tags of het uitbreiden van tags binnen een aangepaste AEM toepassing, wordt op deze pagina het gebruik van de
die met de
Zie voor gerelateerde informatie over labelen:
- Tags beheren voor informatie over het maken en beheren van tags en over de inhoudstags die zijn toegepast.
- Tags gebruiken voor informatie over het labelen van inhoud.
Overzicht van de API voor tags overview-of-the-tagging-api
De uitvoering van de coderingskader in AEM staat het beheer van tags en tag-inhoud met behulp van de JCR API toe. De tagmanager zorgt ervoor dat tags die als waarden zijn ingevoerd in het dialoogvenster cq:tags
De eigenschap van de tekenreeksarray wordt niet gedupliceerd. TagID's die naar niet-bestaande tags verwijzen, worden verwijderd en TagID's voor verplaatste of samengevoegde tags worden bijgewerkt. TagManager gebruikt een JCR-observatielistener die onjuiste wijzigingen retourneert. De hoofdklassen bevinden zich in de com.day.cq.tagging pakket:
- JcrTagManagerFactory - retourneert een op JCR gebaseerde implementatie van een
TagManager
. Dit is de referentie-implementatie van de API voor labelen. TagManager
- Hiermee kunt u tags oplossen en maken op basis van paden en namen.Tag
- definieert het labelobject.
Een op JCR gebaseerde tagbeheer ophalen getting-a-jcr-based-tagmanager
Als u een instantie TagManager wilt ophalen, hebt u een JCR nodig Session
en om getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
In de typische verkoopcontext kunt u zich ook aanpassen aan een TagManager
van de ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Een tagobject ophalen retrieving-a-tag-object
A Tag
kan worden opgehaald via de TagManager
door een bestaande tag op te lossen of een nieuwe tag te maken:
Tag tag = tagManager.resolve("my/tag"); // for existing tags
Tag tag = tagManager.createTag("my/tag"); // for new tags
Voor de op JCR gebaseerde implementatie, die kaarten Tags
op JCR Nodes
, kunt u rechtstreeks gebruikmaken van de adaptTo
mechanisme als u de bron hebt (bijvoorbeeld /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Terwijl een markering slechts *from *a middel (geen knoop) mag worden omgezet, kan een markering *to *both een knoop en een middel worden omgezet:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Node
tot Tag
is niet mogelijk, omdat Node
implementeert Sling niet Adaptable.adaptTo(Class)
methode.Labels ophalen en instellen getting-and-setting-tags
// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);
// Setting tags to a Resource:
tagManager.setTags(resource, tags);
Zoeken naar tags searching-for-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
te gebruiken is:com.day.cq.commons.RangeIterator
Tags verwijderen deleting-tags
tagManager.deleteTag(tag);
Codes dupliceren replicating-tags
Het is mogelijk om de replicatiedienst te gebruiken ( Replicator
) met tags omdat tags van het type zijn nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
Tags aan de clientzijde tagging-on-the-client-side
CQ.tagging.TagInputField
is een formulierwidget voor het invoeren van codes. Deze bevat een pop-upmenu waarin u een keuze kunt maken uit bestaande tags, waaronder automatisch aanvullen en een groot aantal andere functies. Het xtype is tags
.
De opschoonfunctie voor tags the-tag-garbage-collector
De opschoonfunctie voor tags is een service op de achtergrond die verborgen en ongebruikte tags opruimt. Verborgen en ongebruikte tags zijn onderliggende codes /content/cq:tags
die een cq:movedTo
eigenschap en worden niet gebruikt op een inhoudsknooppunt. Het getal is nul. Door dit lazy schrappingsproces te gebruiken, de inhoudsknoop (d.w.z. cq:tags
eigenschap) hoeft niet te worden bijgewerkt als onderdeel van de verplaatsings- of samenvoegbewerking. De verwijzingen in de cq:tags
eigenschap wordt automatisch bijgewerkt wanneer de cq:tags
eigenschap wordt bijgewerkt, bijvoorbeeld via het dialoogvenster Pagina-eigenschappen.
De opschoonfunctie voor tags wordt standaard eenmaal per dag uitgevoerd. Dit kan worden gevormd bij:
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
Zoeken en taglijst tag-search-and-tag-listing
De zoekopdracht naar tags en het tagoverzicht werkt als volgt:
-
De zoekopdracht naar TagID zoekt naar de tags met de eigenschap
cq:movedTo
ingesteld op TagID en doorloopt decq:movedTo
TagID's. -
De zoekopdracht naar tagtitel doorzoekt alleen de tags zonder een
cq:movedTo
eigenschap.
Tags in verschillende talen tags-in-different-languages
Zoals beschreven in de documentatie voor het beheer van tags, in de sectie Tags beheren in verschillende talen, een tag title
kunnen in verschillende talen worden gedefinieerd. Vervolgens wordt een taalgevoelige eigenschap toegevoegd aan het tagknooppunt. Deze eigenschap heeft de indeling jcr:title.<locale>
, bijvoorbeeld jcr:title.fr
voor de Franse vertaling. <locale>
moet een tekenreeks zijn met een kleine ISO-landinstelling en moet "_" in plaats van "-" gebruiken, bijvoorbeeld: de_ch
.
Wanneer de Dieren -tag wordt toegevoegd aan de Producten pagina, de waarde stockphotography:animals
wordt toegevoegd aan de eigenschap cq:tags
van het knooppunt /content/geometrixx/nl/products/jcr:content. Er wordt naar de vertaling verwezen vanuit het tagknooppunt.
De server-side API heeft gelokaliseerd title
-gerelateerde methoden:
-
- getLocalizedTitle(Locale locale)
- getLocalizedTitlePaths()
- getLocalizedTitles()
- getTitle(landinstelling van landinstelling)
- getTitlePath(landinstelling)
-
- canCreateTagByTitle(String tagTitlePath, landinstelling)
- createTagByTitle(String tagTitlePath, landinstelling)
- resolveByTitle(String tagTitlePath, landinstelling)
In AEM kan de taal worden verkregen via de paginataal of via de taal van de gebruiker:
-
om de paginataal in JSP terug te winnen:
currentPage.getLanguage(false)
-
om de gebruikerstaal in JSP terug te winnen:
slingRequest.getLocale()
currentPage
en slingRequest
zijn beschikbaar in een JSP via <cq:definedobjects> tag.
Bij het labelen is lokalisatie afhankelijk van de context als tag titles
kan worden weergegeven in de paginataal, in de taal van de gebruiker of in een andere taal.
Een nieuwe taal toevoegen aan het dialoogvenster Tag bewerken adding-a-new-language-to-the-edit-tag-dialog
De volgende procedure beschrijft hoe u een nieuwe taal (het Fins) aan de Tag bewerken dialoogvenster:
-
In CRXDE, bewerkt u de eigenschap voor meerdere waarden
languages
van het knooppunt/content/cq:tags
. -
Toevoegen
fi_fi
- die staat voor de Finse landinstelling - en sla de wijzigingen op.
De nieuwe taal (Fins) is nu beschikbaar in het tagdialoogvenster van de pagina-eigenschappen en in het dialoogvenster Tag bewerken wanneer u een tag bewerkt in het dialoogvenster Tags console.
/libs/wcm/core/resources/languages
.