Inhoud labelen en de taginfrastructuur AEM gebruiken:
cq:Tag
onder de taxonomie root node.NodeType
moet de cq:Taggable
mixin.cq:tags
eigenschap en wordt omgezet in een knooppunt van het type cq:Tag
.De declaratie van een tag wordt vastgelegd in de repository in een knooppunt van het type cq:Tag.
Een tag kan een eenvoudig woord zijn (bijvoorbeeld fruit
) of een hiërarchische taxonomie vertegenwoordigen (bijvoorbeeld fruit/apple
, dat wil zeggen zowel vruchten in het algemeen als de meer specifieke appel).
Tags worden geïdentificeerd door een unieke TagID.
Een tag bevat optionele metagegevens, zoals een titel, gelokaliseerde titels en een beschrijving. De titel moet worden weergegeven in gebruikersinterfaces in plaats van de TagID
, indien aanwezig.
Met het coderingsframework kunt u auteurs en sitebezoekers ook beperken tot het gebruik van specifieke, vooraf gedefinieerde tags.
cq:Tag
.TagID
.TagID
bevat altijd een naamruimte.jcr:title
eigenschap (de titel die moet worden weergegeven in de UI)jcr:description
eigenschapA TagID
identificeert een weg die aan een markeringsknoop in de bewaarplaats oplost.
De TagID
is een steno die begint met de naamruimte, of het kan een absolute waarde zijn die begint met de taxonomie root node.
Als inhoud is gelabeld en nog niet bestaat, wordt het cq:tags
eigenschap wordt toegevoegd aan het inhoudsknooppunt en de TagID
wordt toegevoegd aan de arraywaarde van de tekenreeks van de eigenschap.
De TagID
bestaat uit een namespace gevolgd door de lokale TagID
. Containerlabels beschikken over subtags die een hiërarchische volgorde in de taxonomie aangeven. Subtags kunnen worden gebruikt om naar labels te verwijzen, net als bij elke lokale tag TagID
. Inhoud bijvoorbeeld labelen met fruit
is toegestaan, zelfs als het een containertag met subtags betreft, zoals fruit/apple
en fruit/banana
.
Het basisknooppunt van de taxonomie is het basispad voor alle tags in de gegevensopslagruimte. Het taxonomiwortelknooppunt mag geen knooppunt van het type zijn cq:Tag
.
In AEM is het basispad /content/cq:tags
en de hoofdnode is van het type cq:Folder
.
Naamruimten staan groepsgegevens toe. Het meest gangbare geval bij gebruik is een naamruimte per site (bijvoorbeeld public, internal en portal) of per grotere toepassing (bijvoorbeeld Sites, Assets, Forms), maar naamruimten kunnen voor verschillende andere behoeften worden gebruikt. Naamruimten worden in de gebruikersinterface gebruikt om alleen de subset van tags (d.w.z. tags van een bepaalde naamruimte) weer te geven die van toepassing is op de huidige inhoud.
De naamruimte van de tag is het eerste niveau in de taxonomy-substructuur. Dit is het knooppunt direct onder de taxonomie root node. Een naamruimte is een knooppunt van het type cq:Tag
waarvan de ouder geen cq:Tag
knooppunttype.
Alle tags hebben een naamruimte. Als er geen naamruimte is opgegeven, wordt de tag toegewezen aan de standaardnaamruimte, die TagID
default
(titel is Standard Tags
) dat /content/cq:tags/default
.
Een containertag is een knooppunt van het type cq:Tag
met een willekeurig aantal onderliggende knooppunten en een willekeurig type onderliggende knooppunten, waardoor het tagmodel kan worden verbeterd met aangepaste metagegevens.
Bovendien fungeren containercodes (of supercodes) in een taxonomie als de subsom van alle subcodes. Inhoud die bijvoorbeeld is gelabeld met fruit/apple
wordt beschouwd als getagd met fruit
ook. Dit betekent dat het zoeken naar inhoud enkel geëtiketteerd met fruit
zou ook de inhoud vinden waaraan fruit/apple
.
Als de tag-id een dubbele punt bevat :
wordt de naamruimte door de dubbele punt gescheiden van de tag of subtaxonomie, die vervolgens worden gescheiden met normale slashes /
. Als de tag-id geen dubbele punt heeft, wordt de standaardnaamruimte geïmpliceerd.
De standaardlocatie en de enige locatie voor tags is lager dan /content/cq:tags
.
Label dat verwijst naar niet-bestaande paden of paden die niet verwijzen naar een cq:Tag
knooppunt wordt als ongeldig beschouwd en wordt genegeerd.
In de volgende tabel ziet u een voorbeeld TagIDs
, hun elementen en hoe TagID
wordt omgezet in een absoluut pad in de opslagplaats.
TagID |
Naamruimte | Lokale id | Containertag(s) | Label blad | Absoluut pad naar opslagplaats |
---|---|---|---|---|---|
dam:fruit/apple/braeburn |
dam |
fruit/apple/braeburn |
fruit , apple |
braeburn |
/content/cq:tags/dam/fruit/apple/braeburn |
color/red |
default |
color/red |
color |
red |
/content/cq:tags/default/color/red |
sky |
default |
sky |
Geen | sky |
/content/cq:tags/default/sky |
dam: |
dam |
Geen | Geen | Geen | /content/cq:tags/dam |
/content/cq:tags/category/car |
category |
car |
car |
car |
/content/cq:tags/category/car |
Wanneer de tag de optionele titeltekenreeks bevat (jcr:title
) het is mogelijk de titel voor weergave te lokaliseren door de eigenschap toe te voegen jcr:title.<locale>
.
Zie voor meer informatie:
Tags bestaan als knooppunten in de opslagplaats onder taxonomie root node. Het toestaan of ontkennen van auteurs en plaatsbezoekers van de capaciteit om markeringen in een bepaalde namespace tot stand te brengen kan worden bereikt door aangewezen ACLs in de bewaarplaats te plaatsen.
Door het weigeren van leesmachtigingen voor bepaalde tags of naamruimten wordt ook de mogelijkheid bepaald om codes toe te passen op specifieke inhoud.
Een typische configuratie omvat:
tag-administrators
groep/rol schrijven toegang tot alle namespaces (toevoegen/wijzigen onder /content/cq:tags
).
add_node
krachtens /content/cq:tags/some_namespace
)De registratie van het knooppunt (CND) moet de cq:Taggable
mengen of cq:OwnerTaggable
mixin.
De cq:OwnerTaggable
mixin, dat overerft van cq:Taggable
, is bedoeld om aan te geven dat de inhoud door de eigenaar/auteur kan worden geclassificeerd. In AEM is het alleen een kenmerk van de cq:PageContent
knooppunt. De cq:OwnerTaggable
Het coderingsframework vereist geen mixin.
Het wordt aanbevolen alleen labels in te schakelen op het knooppunt op het hoogste niveau van een samengevoegd inhoudsitem (of op het bijbehorende item jcr:content
knooppunt). Voorbeelden zijn:
cq:Page
) waarbij de jcr:content
node is type cq:PageContent
die de cq:Taggable
mixin.cq:Asset
) waarbij de jcr:content/metadata
node heeft altijd de cq:Taggable
mixin.Node Type definities bestaan in de bewaarplaats als Cnd- dossiers. De CND-notatie wordt gedefinieerd als onderdeel van de JCR-documentatie hier.
De belangrijkste definities voor de in AEM opgenomen knooppunttypen zijn:
[cq:Tag] > mix:title, nt:base
orderable
- * (undefined) multiple
- * (undefined)
+ * (nt:base) = cq:Tag version
[cq:Taggable]
mixin
- cq:tags (string) multiple
[cq:OwnerTaggable] > cq:Taggable
mixin
De cq:tags
eigenschap is een tekenreeks-array die wordt gebruikt voor het opslaan van een of meer TagID
s wanneer zij op inhoud door auteurs of plaatsbezoekers worden toegepast. De eigenschap heeft alleen betekenis wanneer deze wordt toegevoegd aan een knooppunt dat is gedefinieerd met het cq:Taggable
mixin.
Als u AEM tagfuncties wilt gebruiken, mogen door aangepaste toepassingen geen andere tageigenschappen worden gedefinieerd dan cq:tags
.
Hieronder volgt een beschrijving van de effecten in de repository wanneer u tags verplaatst of samenvoegt met behulp van de Tagingconsole:
Wanneer een tag A wordt verplaatst of samengevoegd met tag B onder /content/cq:tags
:
cq:movedTo
eigenschap.cq:backlinks
eigenschap.cq:movedTo
verwijst naar label B.
Deze eigenschap betekent dat tag A is verplaatst of samengevoegd met tag B.
Als tag B wordt verplaatst, wordt deze eigenschap dienovereenkomstig bijgewerkt. Tag A is dus verborgen en wordt alleen in de opslagplaats bewaard om tag-id's op te lossen in inhoudsknooppunten die verwijzen naar tag A.
De opschoonfunctie voor ongewenste details verwijdert tags zoals tag A, als er geen inhoudsknooppunten meer naar wijzen.
Een speciale waarde voor de cq:movedTo
eigenschap is nirvana
: wordt toegepast wanneer de tag wordt verwijderd, maar niet kan worden verwijderd uit de repository omdat er subtags zijn met een cq:movedTo
dat moet worden bewaard.
De cq:movedTo
De eigenschap wordt alleen aan de verplaatste of samengevoegde tag toegevoegd als aan een van deze voorwaarden wordt voldaan:
cq:backlinks
houdt de verwijzingen in de andere richting, d.w.z. het houdt een lijst bij van alle markeringen die zijn verplaatst naar of samengevoegd met markering B.
cq:movedTo
eigenschappen zijn up-to-date wanneer tag B wordt verplaatst/samengevoegd/verwijderd of wanneer tag B wordt geactiveerd; in dat geval moeten ook alle tags met de achtergrond worden geactiveerd.De cq:backlinks
De eigenschap wordt alleen aan de verplaatste of samengevoegde tag toegevoegd als aan een van deze voorwaarden wordt voldaan:
Een cq:tags
De eigenschap van een inhoudsknooppunt omvat het volgende oplossen:
Als er geen overeenkomst onder /content/cq:tags
, er wordt geen tag geretourneerd.
Als de tag een cq:movedTo
eigenschap ingesteld, wordt de tag-id waarnaar wordt verwezen gevolgd.
cq:movedTo
eigenschap.Als de volgende tag geen cq:movedTo
eigenschap, wordt de tag gelezen.
Als u de wijziging wilt publiceren wanneer een tag is verplaatst of samengevoegd, gaat u naar cq:Tag
node en al zijn backlinks moeten worden gerepliceerd.
Later wordt de pagina bijgewerkt met cq:tags
de eigenschap wijzigt de 'oude' referenties automatisch.
In Adobe Experience Manager 6.4 en hoger worden tags opgeslagen onder /content/cq:tags
. In scenario's waarin Adobe Experience Manager vanaf de vorige versie is geüpgraded, zijn de tags echter nog steeds aanwezig onder de oude locatie /etc/tags
. In geüpgrade systemen moeten codes worden gemigreerd naar /content/cq:tags
.
In Pagina-eigenschappen van de pagina Tags wordt aangeraden de tag-id te gebruiken (bijvoorbeeld geometrixx-outdoors:activity/biking
) in plaats van de harde code het basispad van de tag (bijvoorbeeld /etc/tags/geometrixx-outdoors/activity/biking
).
Als u labels wilt weergeven, com.day.cq.tagging.servlets.TagListServlet
kan worden gebruikt.
Het wordt aangeraden de API voor tagbeheer als bron te gebruiken.
Aan het begin van de component detecteert de API TagManager of het een geüpgrade AEM-instantie is. In een geüpgraded systeem worden codes opgeslagen onder /etc/tags
.
De API van TagManager wordt dan uitgevoerd in achterwaartse verenigbaarheidswijze, wat betekent API gebruikt /etc/tags
als het basispad. Zo niet, dan wordt een nieuwe locatie gebruikt /content/cq:tags
.
Werk de taglocatie bij.
Nadat u tags naar de nieuwe locatie hebt gemigreerd, voert u het volgende script uit.
import org.apache.sling.api.resource.*
import javax.jcr.*
ResourceResolverFactory resourceResolverFactory = osgi.getService(ResourceResolverFactory.class);
ResourceResolver resolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
Session session = resolver.adaptTo(Session.class);
def queryManager = session.workspace.queryManager;
def statement = "/jcr:root/content/cq:tags//element(*, cq:Tag)[jcr:contains(@cq:movedTo,\'/etc/tags\') or jcr:contains(@cq:backlinks,\'/etc/tags\')]";
def query = queryManager.createQuery(statement, "xpath");
println "query = ${query.statement}\n";
def tags = query.execute().getNodes();
tags.each { node ->
def tagPath = node.path;
println "tag = ${tagPath}";
if(node.hasProperty("cq:movedTo") && node.getProperty("cq:movedTo").getValue().toString().startsWith("/etc/tags")){
def movedTo = node.getProperty("cq:movedTo").getValue().toString();
println "cq:movedTo = ${movedTo} \n";
movedTo = movedTo.replace("/etc/tags","/content/cq:tags");
node.setProperty("cq:movedTo",movedTo);
} else if(node.hasProperty("cq:backlinks")){
String[] backLinks = node.getProperty("cq:backlinks").getValues();
int count = 0;
backLinks.each { value ->
if(value.startsWith("/etc/tags")){
println "cq:backlinks = ${value}\n";
backLinks[count] = value.replace("/etc/tags","/content/cq:tags");
}
count++;
}
node.setProperty("cq:backlinks",backLinks);
}
}
session.save();
println "---------------------------------Success-------------------------------------"
Het script haalt alle tags op die /etc/tags
in de waarde van cq:movedTo/cq:backLinks
eigenschap. Het herhaalt dan door de opgehaalde resultaatreeks en lost op cq:movedTo
en cq:backlinks
eigenschapswaarden naar /content/cq:tags
paden (wanneer /etc/tags
wordt gedetecteerd in de waarde).
Klassieke UI is niet nul onderbreking volgzaam en steunt niet de nieuwe weg van de markeringsbasis. Als u een klassieke interface wilt gebruiken die groter is dan /etc/tags
moet worden gecreëerd, gevolgd door cq-tagging
opnieuw opstarten.
Als de bijgewerkte AEM-instanties worden ondersteund door de API TagManager en worden uitgevoerd in de klassieke gebruikersinterface:
Eenmaal verwijzingen naar het oude basispad voor tags /etc/tags
worden vervangen door tagId of nieuwe taglocatie te gebruiken /content/cq:tags
kunt u tags migreren naar de nieuwe locatie /content/cq:tags
in CRX DE gevolgd door het opnieuw opstarten van de component.
Nadat u tags naar de nieuwe locatie hebt gemigreerd, voert u het bovenstaande script uit.