Tagging ermöglicht die Kategorisierung und Organisation von Inhalten. Tags können anhand eines Namespace und einer Taxonomie klassifiziert werden. Ausführliche Informationen zur Verwendung von Tags:
Dieser Artikel konzentriert sich auf das zugrunde liegende Framework, das Tagging in AEM unterstützt, und wie man es als Entwickler nutzen kann.
Versehen Sie Inhalte mit Tags und nutzen Sie die AEM-Tagging-Infrastruktur wie folgt:
cq:Tag
vorhanden sein.NodeType
des mit Tags versehenen Inhaltsknotens muss das Mixin cq:Taggable
beinhalten.TagID
wird der Eigenschaft cq:tags
des Inhaltsknotens hinzugefügt und ergibt einen Knoten vom Typ cq:Tag
.Die Funktion eines Tags wird im Repository in einem Knoten vom Typ cq:Tag.
erfasst
sky
) sein oder eine hierarchische Taxonomie (z. B. fruit/apple
, womit sowohl die Frucht im Allgemeinen als auch der Apfel im Speziellen gemeint sind) darstellen.TagID
identifiziert.TagID
angezeigt werden.Das Tagging-Framework bietet außerdem die Möglichkeit, Autoren und Website-Besuchern die Verwendung bestimmter, vordefinierter Tags vorzugeben.
cq:Tag
.TagID
.TagID
umfasst immer einen Namespace.jcr:title
(der Titel, der in der Benutzeroberfläche angezeigt werden soll) ist optional.jcr:description
ist optional.Eine TagID
identifiziert einen Pfad, der einen Tag-Knoten im Repository ergibt.
Normalerweise ist die TagID
eine kurze TagID
, die mit dem Namespace beginnt. Sie kann auch eine absolute TagID
sein, die mit dem Stammknoten der Taxonomie beginnt.
Wenn Inhalte mit Tags versehen werden, aber noch nicht vorhanden sind, wird dem Inhaltsknoten die Eigenschaft cq:tags
und dem String
-Array-Wert der Eigenschaft die TagID
hinzugefügt.
Die TagID
besteht aus einem Namespace gefolgt von der lokalen TagID
. Container-Tags weisen untergeordnete Tags auf, die eine hierarchische Reihenfolge in der Taxonomie darstellen. Untergeordnete Tags können dazu verwendet werden, auf Tags genau wie auf eine andere lokale TagID
zu verweisen. Beispielsweise ist es erlaubt, Inhalte mit dem Tag fruit
zu versehen, auch wenn es sich um ein Container-Tag mit untergeordneten Tags handelt, z. B. fruit/apple
oder fruit/banana
.
Der Stammknoten der Taxonomie ist der Basispfad für alle Tags im Repository. Der Stammknoten der Taxonomie darf kein Knoten vom Typ cq:Tag
sein.
In AEM ist der Basispfad /content/cq:tags
und der Stammknoten ist vom Typ cq:Folder
.
Namespaces ermöglichen das Gruppieren von Elementen. Der vorherrschende Anwendungsfall besteht darin, einen Namespace pro Website (z. B. öffentlich versus intern) oder pro größerer Anwendung (z. B. Sites oder Assets) zu verwenden. Namespaces können aber auch anderweitig eingesetzt werden. Namespaces werden in der Benutzeroberfläche verwendet, um nur die Untergruppe von Tags (d. h. die Tags eines bestimmten Namespace) anzuzeigen, die auf den aktuellen Inhalt anwendbar sind.
Der Namespace des Tags ist die erste Ebene im Teilbaum der Taxonomie, der den Knoten direkt unterhalb des Stammknotens der Taxonomie darstellt. Ein Namespace ist ein Knoten vom Typ cq:Tag
, dessen übergeordnetes Element nicht vom Knotentyp cq:Tag
ist.
Alle Tags haben einen Namespace. Wenn kein Namespace angegeben ist, wird das Tag dem standardmäßigen Namespace zugeordnet, der TagID
default
lautet, d. h. /content/cq:tags/default
. Der Titel ist in diesen Fällen standardmäßig auf Standard Tags
eingestellt.
Container-Tags sind Knoten vom Typ cq:Tag
, die eine beliebige Anzahl untergeordneter Knoten von beliebigen Typen enthalten. Das ermöglicht die Erweiterung des Tag-Modells mit benutzerdefinierten Metadaten.
Darüber hinaus dienen Container-Tags (oder Super-Tags) in einer Taxonomie als Untersummierung aller untergeordneten Tags: Beispielsweise werden Inhalte, die mit dem Tag fruit/apple
versehen sind, auch als mit dem Tag fruit
versehen betrachtet. Wenn also nach Inhalten gesucht wird, die mit dem Tag fruit
versehen sind, werden auch Inhalte mit dem Tag fruit/apple
gefunden.
Wenn die Tag-ID einen Doppelpunkt (:
) enthält, trennt der Doppelpunkt den Namespace vom Tag oder der Untertaxonomie, die dann mit normalen Schrägstrichen (/
) voneinander getrennt werden. Wenn in der Tag-ID kein Doppelpunkt vorkommt, ist der Standard-Namespace impliziert.
Der standardmäßige und einzige Speicherort von Tags befindet sich unter /content/cq:tags
.
Tags, die auf nicht vorhandene Pfade oder auf Pfade verweisen, an deren Ende sich kein cq:Tag
-Knoten befindet, werden als ungültig betrachtet und werden ignoriert.
Die folgende Tabelle zeigt einige TagID
-Beispiele, ihre Elemente und wie die TagID
einen absoluten Pfad im Repository ergibt:
TagID |
Namespace | Lokale ID | Container-Tag(s) | Leaf-Tag | Absoluter Tag-Pfad im Repository |
---|---|---|---|---|---|
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 |
(keine) | sky |
/content/cq:tags/default/sky |
dam: |
dam |
(keine) | (keine) | (keins) | /content/cq:tags/dam |
content/cq:tags/category/car |
category |
car |
car |
car |
content/cq:tags/category/car |
Wenn das Tag die optionale Titelzeichenfolge enthält (jcr:title
), ist es möglich, den Titel zur Anzeige zu lokalisieren, indem die Eigenschaft jcr:title.<locale>
hinzugefügt wird.
Weitere Informationen finden Sie unter:
Tags bestehen als Knoten im Repository unter dem Stammknoten der Taxonomie. Sie erlauben oder verweigern Autoren und Website-Besuchern die Erstellung von Tags in einem jeweiligen Namespace, indem Sie im Repository entsprechende ACLs festlegen.
Durch das Verweigern von Leseberechtigungen für bestimmte Tags oder Namespaces wird die Möglichkeit gesteuert, Tags auf bestimmte Inhalte anzuwenden.
Eine typische Vorgehensweise umfasst Folgendes:
tag-administrators
(unter /content/cq:tags
hinzufügen/ändern). Diese Gruppe enthält AEM standardmäßig.add_node
unter /content/cq:tags/some_namespace
).Damit Anwendungsentwickler einen Inhaltstyp mit Tags versehen können, muss die Registrierung eines Knotens (CND) das Mixin cq:Taggable
oder das Mixin cq:OwnerTaggable
umfassen.
Das Mixin cq:OwnerTaggable
, das von cq:Taggable
übernimmt, soll anzeigen, dass der Inhalt vom Besitzer/Autor klassifiziert werden kann. In AEM handelt es sich hierbei nur um ein Attribut des Knotens cq:PageContent
. Das Mixin cq:OwnerTaggable
wird vom Tagging-Framework nicht benötigt.
Es wird empfohlen, Tags nur auf dem Knoten der obersten Ebene eines aggregierten Inhaltselements (oder dessen jcr:content
-Knoten) zu aktivieren. Beispiele dafür sind:
cq:Page
), deren Knoten jcr:content
vom Typ cq:PageContent
sind, der das Mixin cq:Taggable
umfasstcq:Asset
), deren Knoten jcr:content/metadata
immer das Mixin cq:Taggable
umfassenKnotentypdefinitionen sind im Repository als CND-Dateien vorhanden. Die CND-Notation wird als Teil der JCR-Dokumentation definiert.
Die wichtigsten Definitionen für die Knotentypen in AEM sind wie folgt:
[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
Die Eigenschaft cq:tags
ist ein String
-Array, das zum Speichern mindestens einer TagID
verwendet wird, wenn diese von Autoren oder Website-Besuchern auf Inhalte angewendet werden. Die Eigenschaft hat nur dann eine Bedeutung, wenn sie einem Knoten hinzugefügt wird, der mit dem Mixin cq:Taggable
definiert wird.
Um die AEM-Tagging-Funktionalität zu nutzen, sollten benutzerdefinierte entwickelte Anwendungen keine anderen Tag-Eigenschaften als cq:tags
definieren.
Im Folgenden finden Sie eine Beschreibung der Auswirkungen, die im Repository auftreten, wenn Sie Tags mit der Tagging-Konsole verschieben oder zusammenführen.
Wenn ein Tag A verschoben oder mit Tag B unter /content/cq:tags
zusammengeführt wird:
Tag A wird nicht gelöscht und erhält eine cq:movedTo
-Eigenschaft.
cq:movedTo
verweist auf Tag B.
Diese Eigenschaft bedeutet, dass Tag A in Tag B verschoben oder zusammengeführt wurde.
Durch Verschieben von Tag B wird diese Eigenschaft entsprechend aktualisiert.
Tag A ist somit ausgeblendet und wird nur im Repository behalten, um Tag-IDs in Inhaltsknoten aufzulösen, die auf Tag A verweisen.
Der Garbage Collector für Tags entfernt Tags wie Tag A, sobald keine Inhaltsknoten mehr darauf verweisen.
Ein spezieller Wert für die Eigenschaft cq:movedTo
ist nirvana
: Er wird angewendet, wenn das Tag gelöscht wird, aber nicht aus dem Repository entfernt werden kann, weil untergeordnete Tags mit cq:movedTo
vorhanden sind, die nicht entfernt werden dürfen.
Die cq:movedTo
-Eigenschaft wird dem verschobenen oder zusammengeführten Tag nur hinzugefügt, wenn eine der folgenden Bedingungen erfüllt ist:
Tag B wird erstellt (im Falle einer Verschiebung) und erhält eine cq:backlinks
-Eigenschaft.
cq:backlinks
speichert Verweise in die andere Richtung, d. h. sie enthält eine Liste aller Tags, die verschoben oder mit Tag B zusammengeführt wurden.
Dies ist hauptsächlich erforderlich, um cq:movedTo
-Eigenschaften auf dem aktuellen Stand zu halten, wenn Tag B auch verschoben/zusammengeführt/gelöscht oder aktiviert wird. In diesem Fall müssen all seine backlinks-Tags ebenso aktiviert werden.
Die cq:backlinks
-Eigenschaft wird dem verschobenen oder zusammengeführten Tag nur hinzugefügt, wenn eine der folgenden Bedingungen erfüllt ist:
Das Lesen einer cq:tags
-Eigenschaft eines Inhaltsknotens umfasst die folgende Auflösung:
/content/cq:tags
keine Übereinstimmung verfügbar ist, wird kein Tag zurückgegeben.cq:movedTo
-Eigenschaft aufweist, steht danach die referenzierte Tag-ID.
cq:movedTo
-Eigenschaft aufweist.cq:movedTo
-Eigenschaft verfügt, wird das Tag gelesen.Um eine Änderung zu veröffentlichen, wenn ein Tag verschoben oder zusammengeführt wurde, müssen der Knoten cq:Tag
und all seine Backlinks repliziert werden. Dies geschieht automatisch, wenn das Tag in der Tag-Verwaltungskonsole aktiviert wird.
Spätere Aktualisierungen der cq:tags
-Eigenschaft der Seite bereinigen automatisch die alten Verweise. Dies wird ausgelöst, da die Auflösung eines verschobenen Tags über die API das Ziel-Tag zurückgibt und so die Ziel-Tag-ID bereitstellt.