För programmatiskt arbete med taggar eller tillägg av taggar i ett anpassat AEM-program beskriver den här sidan användningen av
Det interagerar med
Mer information om taggning finns i:
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:
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.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 det typiska Sling-sammanhanget kan du även anpassa dig till TagManager
från ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
A Tag
kan hämtas via TagManager
genom att antingen matcha en befintlig tagg eller skapa en:
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 Nodes
kan du direkt använda Sling adaptTo
om du har resursen (till exempel /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);
Direkt anpassning från Node
till Tag
är inte möjligt eftersom Node
implementerar inte Sling Adaptable.adaptTo(Class)
-metod.
// 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);
Giltig RangeIterator
att använda är:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
Det går att använda replikeringstjänsten ( Replicator
) med taggar eftersom taggar är av typen nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
Formulärwidgeten CQ.tagging.TagInputField
används 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 ä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 till exempel via dialogrutan för sidegenskaper.
Taggskräpinsamlaren körs som standard en gång om dagen. Du kan konfigurera den på:
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
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.
Se beskrivningen i dokumentationen för att administrera taggar i avsnittet Hantera taggar på olika språk, en tagg title
kan 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>
, till exempel jcr:title.fr
för den franska översättningen. The <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:
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()
The currentPage
och slingRequest
är tillgängliga i en JSP via <cq:definedobjects> -tagg.
För taggning beror lokaliseringen på sammanhanget som tagg titles
kan visas på sidspråket, på användarspråket eller på något annat språk.
I proceduren nedan beskrivs hur du lägger till ett språk (finska) i Redigera tagg dialog:
I CRXDE, redigera egenskapen för flera värden languages
av noden /content/cq:tags
.
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.
Det nya språket måste vara ett av de AEM identifierade språken. Det måste alltså vara tillgängligt som en nod nedan /libs/wcm/core/resources/languages
.
När du installerar ett Service Pack återställs språkegenskapen för noden /content/cq:tags till standardvärdet. Det är därför nödvändigt att lägga till den från egenskaperna före installationen.