Zum Zwecke von programmatischem Arbeiten mit Tags oder zum Erweitern von Tags in einer benutzerdefinierten AEM-Anwendung wird auf dieser Seite die Verwendung der
die mit dem
Weitere Informationen zum Tagging finden Sie unter:
Die Implementierung des Tagging-Frameworks in AEM ermöglicht die Verwaltung von Tags und Tag-Inhalten mithilfe der JCR-API . Der TagManager stellt sicher, dass Tags, die als Werte in die cq:tags
String-Array-Eigenschaft nicht dupliziert wird, entfernt sie Tag-IDs, die auf nicht vorhandene Tags verweisen, und aktualisiert Tag-IDs für verschobene oder zusammengeführte Tags. TagManager verwendet einen JCR Observation Listener, der alle falschen Änderungen zurückgesetzt. Die wichtigsten Klassen befinden sich im Paket com.day.cq.tagging:
TagManager
. Es ist die Referenzimplementierung der Tagging-API.TagManager
– ermöglicht das Auflösen und Erstellen von Tags nach Pfaden und Namen.Tag
- definiert das Tag-Objekt.Um eine TagManager-Instanz abzurufen, benötigen Sie ein JCR Session
und getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
Im typischen Sling-Kontext können Sie sich auch mit dem TagManager
an einen ResourceResolver
anpassen:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Ein Tag
kann über den TagManager
abgerufen werden, indem entweder ein vorhandenes Tag aufgelöst oder ein neues erstellt wird:
Tag tag = tagManager.resolve("my/tag"); // for existing tags
Tag tag = tagManager.createTag("my/tag"); // for new tags
Für die JCR-basierte Implementierung, die Tags
auf JCR-Nodes
abbildet, können Sie den Mechanismus adaptTo
von Sling direkt verwenden, wenn Sie die Ressource haben (z. B. /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Auch wenn ein Tag nur aus *einer Ressource (kein Knoten) konvertiert werden kann, kann ein Tag *in *sowohl einen Knoten als auch eine Ressource konvertiert werden:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Die direkte Anpassung von Node
zu Tag
ist nicht möglich, da Node
die Sling-Methode Adaptable.adaptTo(Class)
nicht implementiert.
// 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);
Der gültige zu verwendete RangeIterator
ist:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
Es ist möglich, den Replikations-Service (Replicator
) mit Tags zu verwenden, da Tags vom Typ nt:hierarchyNode
sind:
replicator.replicate(session, replicationActionType, tagPath);
CQ.tagging.TagInputField
ist ein Formular-Widget zum Eingeben von Tags. Es beinhaltet ein Popup-Menü für die Auswahl vorhandener Tags, einschließlich Autovervollständigen und vieler anderer Funktionen. Sein xtype ist tags
.
Der Tag Garbage Collector ist ein Hintergrund-Service, der die ausgeblendeten und nicht verwendeten Tags bereinigt. Ausgeblendete und nicht verwendete Tags sind Tags unter /content/cq:tags
die cq:movedTo
-Eigenschaft und nicht in einem Inhaltsknoten verwendet werden - sie haben eine Anzahl von null. Durch Verwenden dieses Lazy-Deletion-Prozesses muss der Inhaltsknoten (d. h. die Eigenschaft cq:tags
) nicht als Teil der Verschiebung oder dem Zusammenführungsvorgang aktualisiert werden. Die Verweise in der Eigenschaft cq:tags
werden automatisch aktualisiert, wenn die Eigenschaft cq:tags
aktualisiert wird, z. B. durch das Seiteneigenschaften-Dialogfeld.
Das Garbage Collector Tag wird standardmäßig einmal am Tag ausgeführt. Dies kann konfiguriert werden unter:
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
Die Tag-Suche und die Tag-Auflistung funktionieren folgendermaßen:
Die Suche nach TagID sucht nach den Tags mit der -Eigenschaft cq:movedTo
auf TagID gesetzt ist und durch die cq:movedTo
Tag-IDs.
Die Suche nach Tag-Titel durchsucht nur die Tags, die keine cq:movedTo
-Eigenschaft.
Wie in der Dokumentation zur Verwaltung von Tags beschrieben, finden Sie im Abschnitt Verwalten von Tags in verschiedenen Sprachen, ein Tag title
kann in verschiedenen Sprachen definiert werden. Eine sprachempfindliche Eigenschaft wird dann dem Tag-Knoten hinzugefügt. Diese Eigenschaft weist das Format jcr:title.<locale>
auf, beispielsweise jcr:title.fr
für die französische Übersetzung. <locale>
muss eine ISO-Gebietsschema-Zeichenfolge in Kleinbuchstaben sein und "_"anstelle von "-"verwenden, z. B.: de_ch
.
Wenn die Tiere -Tag wird dem Produkte Seite, der Wert stockphotography:animals
wird der Eigenschaft hinzugefügt cq:tags
des Knotens /content/geometrixx/en/products/jcr:content. Die Übersetzung wird vom Tag-Knoten referenziert.
Die Server-seitige API verfügt über lokalisierte title
-bezogene Methoden:
In AEM kann die Sprache entweder aus der Seitensprache oder aus der Anwendersprache abgerufen werden:
So rufen Sie die Seitensprache in einer JSP ab:
currentPage.getLanguage(false)
So rufen Sie die Benutzersprache in einer JSP ab:
slingRequest.getLocale()
currentPage
und slingRequest
sind in einer JSP über das Tag <cq:definedObjects> verfügbar.
Beim Tagging hängt die Lokalisierung vom Kontext ab, da Tag-titles
in der Seitensprache, in der Anwendersprache oder in jeder anderen Sprache angezeigt werden können.
Im folgenden Verfahren wird beschrieben, wie Sie eine neue Sprache (Finnisch) im Dialogfeld Tag bearbeiten hinzufügen:
Bearbeiten Sie in CRXDE die Mehrwerteigenschaft languages
des Knotens /content/cq:tags
.
Fügen Sie fi_fi
hinzu, das das finnische Gebietsschema darstellt, und speichern Sie die Änderungen.
Die neue Sprache (Finnisch) ist jetzt im Tag-Dialogfeld der Seiteneigenschaften und im Dialogfeld Tag bearbeiten verfügbar, wenn Sie ein Tag in der Tagging-Konsole bearbeiten.
Die neue Sprache muss eine der von AEM erkannten Sprachen sein, d. h. sie muss als Knoten unter /libs/wcm/core/resources/languages
verfügbar sein.