Tags maken in een AEM toepassing

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:

  • Beheer van tags 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 labelen

De implementatie van het tagging framework in AEM maakt het beheer van tags en tag-inhoud met behulp van de JCR API mogelijk. De TagManager zorgt ervoor dat tags die zijn ingevoerd als waarden voor de eigenschap van de cq:tags-tekenreeksarray niet worden gedupliceerd. De tagID's die verwijzen naar niet-bestaande tags, worden verwijderd en de tagID's voor verplaatste of samengevoegde tags worden bijgewerkt. TagManager gebruikt een JCR-observatielistener die onjuiste wijzigingen retourneert. De hoofdklassen bevinden zich in het 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

Om een instantie TagManager terug te winnen, moet u JCR Session hebben en getTagManager(Session) roepen:

@Reference
JcrTagManagerFactory jcrTagManagerFactory;

TagManager tagManager = jcrTagManagerFactory.getTagManager(session);

In de typische het Verkopen context kunt u aan TagManager van ResourceResolver ook aanpassen:

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

Een tagobject ophalen

Een Tag kan door TagManager worden teruggewonnen, of het oplossen van een bestaande markering of het creëren van nieuwe:

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 Sling direct gebruiken adaptTo als u het middel (b.v. zoals /content/cq:tags/default/my/tag) hebt:

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

Directe aanpassing van Node aan Tag is niet mogelijk, omdat Node de methode Sling Adaptable.adaptTo(Class) niet implementeert.

Labels ophalen en instellen

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

De geldige RangeIterator is:

com.day.cq.commons.RangeIterator

Labels verwijderen

tagManager.deleteTag(tag);

Codes dupliceren

Het is mogelijk om de replicatieservice ( Replicator) met markeringen te gebruiken omdat de markeringen van type nt:hierarchyNode zijn:

replicator.replicate(session, replicationActionType, tagPath);

Tags toevoegen aan de clientzijde

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. Zijn xtype is tags.

De opschoonfunctie voor tags

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 lazy schrappingsproces te gebruiken, moet de inhoudsknoop (d.w.z. het cq:tags bezit) niet als deel van de beweging of de fusieverrichting worden bijgewerkt. De verwijzingen in het cq:tags bezit worden automatisch bijgewerkt wanneer cq:tags bezit wordt bijgewerkt, bijvoorbeeld door de dialoog van de 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

Tag zoeken en taglijst

De zoekopdracht naar tags en het tagoverzicht werkt als volgt:

  • De zoekopdracht naar TagID zoekt naar de tags waarvan de eigenschap cq:movedTo is ingesteld op TagID en doorloopt de tag-id's cq:movedTo.

  • Bij het zoeken naar tagtitel worden alleen de tags doorzocht die geen eigenschap cq:movedTo hebben.

Tags in verschillende talen

Zoals beschreven in de documentatie voor het beheer van labels, kunt u in de sectie Tags beheren in verschillende talen een tag titledefiniëren in verschillende talen. 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 zijn met een kleine ISO-landinstelling en moet "_" in plaats van "-" gebruiken, bijvoorbeeld: de_ch.

Wanneer de tag Dieren wordt toegevoegd aan de pagina Producten, wordt de waarde stockphotography:animals toegevoegd aan de eigenschap cq:tags van het knooppunt /content/geometrixx/en/products/jcr:content. Er wordt naar de vertaling verwezen vanuit het tagknooppunt.

De server-side API heeft gelokaliseerde title verwante methodes:

  • com.day.cq.tagging.Tag

    • getLocalizedTitle(Locale locale)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(landinstelling van landinstelling)
    • getTitlePath(landinstelling)
  • com.day.cq.tagging.TagManager

    • 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 de <cq:definedobjects> tag.

Bij het labelen hangt de lokalisatie af van de context, aangezien tag titleskan worden weergegeven in de paginataal, in de gebruikerstaal of in een andere taal.

Een nieuwe taal toevoegen aan het dialoogvenster Tag bewerken

In de volgende procedure wordt beschreven hoe u een nieuwe taal (Fins) kunt toevoegen aan het dialoogvenster Tag Edit:

  1. Bewerk in CRXDE de eigenschap multi-value languages van het knooppunt /content/cq:tags.

  2. Voeg fi_fi - die de Finse scène vertegenwoordigt - toe en sla de veranderingen 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 de console Tags toevoegen.

OPMERKING

De nieuwe taal moet een van de AEM erkende talen zijn, d.w.z. het moet beschikbaar zijn als een knooppunt onder /libs/wcm/core/resources/languages.

Op deze pagina