Tags maken in AEM-toepassingen building-tagging-into-aem-applications
Voor programmatisch werken met tags of tags uitbreiden binnen een aangepaste AEM-toepassing, wordt in dit document het gebruik van de opdracht
die met de
Voor gerelateerde informatie over codering:
- Zie Gebruikend Markeringen voor informatie over het etiketteren van inhoud als inhoudauteur.
- Zie Tags beheren voor een beheerder. Het standpunt van de beheerder over het maken en beheren van tags en waarop inhoudstags zijn toegepast.
Overzicht van de API voor tags overview-of-the-tagging-api
De implementatie van het etiketterende kader in AEM staat beheer van markeringen en markeringsinhoud toe gebruikend JCR API. TagManager zorgt ervoor dat tags die zijn ingevoerd als waarden voor de eigenschap cq:tags string array, niet worden gedupliceerd, TagID verwijdert het aanwijzen van niet-bestaande tags en werkt TagID s bij voor verplaatste of samengevoegde tags. TagManager gebruikt een JCR-observatielistener die onjuiste wijzigingen retourneert. De belangrijkste klassen zijn in het com.day.cq.tagging pakket:
JcrTagManagerFactory- retourneert een op JCR gebaseerde implementatie van eenTagManager. 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 tagobject.
Een op JCR gebaseerde tagbeheer ophalen getting-a-jcr-based-tagmanager
Als u een TagManager -instantie wilt ophalen, hebt u een JCR Session nodig en moet u getTagManager(Session) aanroepen:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
In de standaardcontext van Verdelen kunt u zich ook aanpassen aan een TagManager van ResourceResolver:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Een tagobject ophalen retrieving-a-tag-object
Een Tag kan via TagManager worden opgehaald door een bestaande tag op te lossen of een bestaande 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 Tags op JCR Nodes in kaart brengt, kunt u het mechanisme van adaptTo van Sling direct gebruiken als u de bron hebt (bijvoorbeeld, zoals /content/cq:tags/default/my/tag):
Tag tag = resource.adaptTo(Tag.class);
Terwijl een markering slechts van een middel (niet een knoop) kan worden omgezet, kan een markering in zowel een knoop als een middel worden omgezet:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Node naar Tag is niet mogelijk, omdat Node de methode Sling Adaptable.adaptTo(Class) niet implementeert.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 die moet worden gebruikt is:com.day.cq.commons.RangeIteratorTags verwijderen deleting-tags
tagManager.deleteTag(tag);
Codes dupliceren replicating-tags
Het is mogelijk om de replicatieservice (Replicator) met markeringen te gebruiken omdat de markeringen van type nt:hierarchyNode zijn:
replicator.replicate(session, replicationActionType, tagPath);
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 tags onder /content/cq:tags die een eigenschap cq:movedTo hebben en niet worden gebruikt op een inhoudsknooppunt. Ze hebben een getal van nul. Door dit luie verwijderingsproces te gebruiken, hoeft het inhoudsknooppunt (de eigenschap cq:tags ) niet te worden bijgewerkt als onderdeel van de verplaatsings- of samenvoegbewerking. De verwijzingen in de eigenschap cq:tags worden automatisch bijgewerkt wanneer de eigenschap cq:tags wordt bijgewerkt, bijvoorbeeld via het dialoogvenster met pagina-eigenschappen.
De opschoonfunctie voor tags wordt standaard eenmaal per dag uitgevoerd. Dit kan worden gevormd bij:
http://<host>:<port>/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
Zoeken naar tags en taglijst tag-search-and-tag-listing
De zoekopdracht naar tags en het tagoverzicht werkt als volgt:
- Bij de zoekopdracht naar
TagIDwordt gezocht naar de tags waarvan de eigenschapcq:movedTois ingesteld opTagIDen wordt decq:movedToTagID-tag gevolgd. - De zoekopdracht naar de titel van een tag zoekt alleen naar de tags zonder de eigenschap
cq:movedTo.
Tags in verschillende talen tags-in-different-languages
Een tag title kan in verschillende talen worden gedefinieerd. Vervolgens wordt een taalgevoelige eigenschap toegevoegd aan het tagknooppunt. Deze eigenschap heeft de notatie jcr:title.<locale> , bijvoorbeeld jcr:title.fr voor de Franse vertaling. <locale> moet een tekenreeks met een kleine ISO-landinstelling zijn en een onderstrepingsteken (_ ) gebruiken in plaats van een koppelteken/streepje (- ), bijvoorbeeld: de_ch .
Bijvoorbeeld, wanneer de Dieren markering aan de Produkten pagina wordt toegevoegd, wordt de waarde stockphotography:animals toegevoegd aan het bezit cq:tags van de knoop /content/wknd/en/products/jcr:content. Er wordt naar de vertaling verwezen vanuit het tagknooppunt.
De server-side API heeft gelokaliseerde title -gerelateerde methoden:
-
getLocalizedTitle(Locale locale)getLocalizedTitlePaths()getLocalizedTitles()getTitle(Locale locale)getTitlePath(Locale locale)
-
canCreateTagByTitle(String tagTitlePath, Locale locale)createTagByTitle(String tagTitlePath, Locale locale)resolveByTitle(String tagTitlePath, Locale locale)
In AEM kunt u de taal opvragen in de paginataal of in de taal van de gebruiker.
Bij het labelen hangt de lokalisatie af van de context, aangezien de tag titles kan worden weergegeven in de paginataal, in de gebruikerstaal 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 te om een nieuwe taal (bijvoorbeeld, Fins) aan de markering toe te voegen geeft dialoog uit:
- In CRXDE, geef het multi-waardebezit
languagesvan de knoop/content/cq:tagsuit. - Voeg
fi_fitoe, die de Finse landinstelling vertegenwoordigt, en sla de wijzigingen op.
Het Fins is nu beschikbaar in de markeringsdialoog van de paginaeigenschappen en in uitgeeft de dialoog van de Markering wanneer het uitgeven van een markering in de Tags console.
/libs/wcm/core/resources/languages .