Bygga taggar i ett AEM building-tagging-into-an-aem-application

CAUTION
AEM 6.4 har nått slutet på den utökade supporten och denna dokumentation är inte längre uppdaterad. Mer information finns i teknisk supportperiod. Hitta de versioner som stöds här.

För programmatiskt arbete med taggar eller tillägg av taggar i ett anpassat AEM-program beskriver den här sidan användningen av

som interagerar med

Mer information om taggning finns i:

  • Administrera taggar om du vill ha information om hur du skapar och hanterar taggar, samt om vilka innehållstaggar som har tillämpats.
  • Använda taggar om du vill ha information om hur du taggar innehåll.

Översikt över taggnings-API:t overview-of-the-tagging-api

Genomförandet av taggningsramverk i AEM kan hantera taggar och tagginnehåll med JCR-API:t . TagManager ser till att taggar som anges som värden i cq:tags strängmatrisegenskapen dupliceras inte, den tar bort tagg-ID:n som pekar på taggar som inte finns och uppdaterar tagg-ID:n för flyttade eller sammanfogade taggar. TagManager använder en JCR-observationslyssnare som återställer felaktiga ändringar. Huvudklasserna finns i com.day.cq.tagging paket:

  • JcrTagManagerFactory - returnerar en JCR-baserad implementering av en TagManager. Det är referensimplementeringen av taggnings-API:t.
  • TagManager - gör att du kan lösa och skapa taggar efter sökvägar och namn.
  • Tag - definierar taggobjektet.

Hämta en JCR-baserad TagManager getting-a-jcr-based-tagmanager

Om du vill hämta en TagManager-instans måste du ha en JCR Session och ringa getTagManager(Session):

@Reference
JcrTagManagerFactory jcrTagManagerFactory;

TagManager tagManager = jcrTagManagerFactory.getTagManager(session);

I ett typiskt Sling-sammanhang kan du även anpassa dig till en TagManager från ResourceResolver:

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

Hämta ett taggobjekt retrieving-a-tag-object

A Tag kan hämtas via TagManagergenom att antingen matcha en befintlig tagg eller skapa en ny:

Tag tag = tagManager.resolve("my/tag"); // for existing tags

Tag tag = tagManager.createTag("my/tag"); // for new tags

För den JCR-baserade implementeringen, som mappar Tags på JCR Nodeskan du direkt använda Sling adaptTo om du har resursen (t.ex. /content/cq:tags/default/my/tag):

Tag tag = resource.adaptTo(Tag.class);

Även om en tagg endast kan konverteras *från *en resurs (inte en nod), kan en tagg konverteras *till *både en nod och en resurs:

Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
NOTE
Direkt anpassning från Node till Tag är inte möjligt eftersom Node implementerar inte Sling Adaptable.adaptTo(Class) -metod.

Hämta och ställa in taggar getting-and-setting-tags

// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);

// Setting tags to a Resource:
tagManager.setTags(resource, tags);

Söker efter taggar 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);
NOTE
Giltig RangeIterator att använda är:
com.day.cq.commons.RangeIterator

Ta bort taggar deleting-tags

tagManager.deleteTag(tag);

Replikerar taggar replicating-tags

Det går att använda replikeringstjänsten ( Replicator) med taggar eftersom taggar är av typen nt:hierarchyNode:

replicator.replicate(session, replicationActionType, tagPath);

Tagga på klientsidan tagging-on-the-client-side

CQ.tagging.TagInputField är en formulärwidget för att ange taggar. Den har en snabbmeny där du kan välja bland befintliga taggar, som innehåller automatisk komplettering och många andra funktioner. Dess xtype är tags.

Taggskräpinsamlaren the-tag-garbage-collector

Taggskräpinsamlaren är en bakgrundstjänst som rensar de dolda och oanvända taggarna. Dolda och oanvända taggar anges nedan /content/cq:tags som har cq:movedTo och används inte på en innehållsnod. De har ett antal som är noll. Genom att använda den här lazy delete-processen kan innehållsnoden (dvs. cq:tags ) behöver inte uppdateras som en del av flytt- eller sammanfogningsåtgärden. Referenserna i cq:tags -egenskapen uppdateras automatiskt när cq:tags egenskapen uppdateras, t.ex. via dialogrutan för sidegenskaper.

Taggskräpinsamlaren körs som standard en gång om dagen. Detta kan konfigureras på:

http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector

Märkordssökning och tagglista tag-search-and-tag-listing

Sökningen efter taggar och tagglistan fungerar enligt följande:

  • Sökningen efter TagID söker efter de taggar som har egenskapen cq:movedTo anges till TagID och följer genom cq:movedTo TaggID:n.

  • Om du söker efter tagg Titel genomsöks bara de taggar som inte har någon cq:movedTo -egenskap.

Taggar på olika språk tags-in-different-languages

Se beskrivningen i dokumentationen för att administrera taggar i avsnittet Hantera taggar på olika språk, en tagg titlekan definieras på olika språk. Sedan läggs en språkkänslig egenskap till i taggnoden. Den här egenskapen har formatet jcr:title.<locale>, t.ex. jcr:title.fr för den franska översättningen. <locale> måste vara en ISO-språksträng med gemener och använda "_" i stället för "-", till exempel: de_ch.

När Djur -taggen läggs till i Produkter sida, värdet stockphotography:animals läggs till i egenskapen cq:tags för noden /content/geometrixx/en/products/jcr:content. Översättningen refereras från taggnoden.

API:t på serversidan har lokaliserats title-relaterade metoder:

  • com.day.cq.tagging.Tag

    • getLocalizedTitle(språkområde)
    • getLocalizedTitlePaths()
    • getLocalizedTitles()
    • getTitle(Locale locale)
    • getTitlePath(språkområde)
  • com.day.cq.tagging.TagManager

    • canCreateTagByTitle(String tagTitlePath, Locale locale)
    • createTagByTitle(String tagTitlePath, Locale locale)
    • resolveByTitle(String tagTitlePath, locale)

I AEM kan språket hämtas antingen från sidspråket eller från användarspråket:

  • för att hämta sidspråket i en JSP:

    • currentPage.getLanguage(false)
  • för att hämta användarspråket i en JSP:

    • slingRequest.getLocale()

currentPage och slingRequest är tillgängliga i en JSP via <cq:definedobjects> -tagg.

För taggning beror lokaliseringen på sammanhanget som tagg titleskan visas på sidspråket, på användarspråket eller på något annat språk.

Lägga till ett nytt språk i dialogrutan Redigera tagg adding-a-new-language-to-the-edit-tag-dialog

I proceduren nedan beskrivs hur du lägger till ett nytt språk (finska) i Redigera tagg dialog:

  1. I CRXDE, redigera egenskapen för flera värden languages av noden /content/cq:tags.

  2. Lägg till fi_fi - som representerar den finska språkinställningen - och spara ändringarna.

Det nya språket (finska) är nu tillgängligt i taggdialogrutan för sidegenskaperna och i Redigera tagg när du redigerar en tagg i Taggning konsol.

NOTE
Det nya språket måste vara ett av de AEM identifierade språken, dvs. det måste vara tillgängligt som en nod nedan /libs/wcm/core/resources/languages.
recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e