Obter um TagManager baseado em JCR
Para recuperar uma instância do TagManager, você precisa ter um JCR Session
e para chamar getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
No contexto típico do Sling, você também pode se adaptar a um TagManager
do ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Recuperação de um objeto de tag
A Tag
podem ser recuperadas por meio do TagManager
, resolvendo uma tag existente ou criando uma nova:
Tag tag = tagManager.resolve("my/tag"); // for existing tags
Tag tag = tagManager.createTag("my/tag"); // for new tags
Para a implementação baseada em JCR, que mapeia Tags
no JCR Nodes
, você pode usar diretamente o Sling adaptTo
mecanismo se você tiver o recurso (por exemplo, como /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Embora uma tag possa ser convertida apenas *de *um recurso (não um nó), uma tag pode ser convertida *para *tanto um nó quanto um recurso :
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Node
para Tag
não é possível, porque Node
não implementa o Sling Adaptable.adaptTo(Class)
método .Obter e definir tags
// Getting the tags of a Resource:
Tag[] tags = tagManager.getTags(resource);
// Setting tags to a Resource:
tagManager.setTags(resource, tags);
Pesquisar por 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);
RangeIterator
para usar é:com.day.cq.commons.RangeIterator
Exclusão de tags
tagManager.deleteTag(tag);
Replicação de tags
É possível usar o serviço de replicação ( Replicator
) com tags, pois as tags são do tipo nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
Marcação no lado do cliente
CQ.tagging.TagInputField
é um widget de formulário para inserir tags. Ele tem um menu pop-up para selecionar entre tags existentes, inclui o preenchimento automático e muitos outros recursos. Seu xtype é tags
.
O Coletor de lixo de tags
O coletor de lixo da tag é um serviço em segundo plano que limpa as tags ocultas e não utilizadas. Tags ocultas e não usadas são tags abaixo /content/cq:tags
que tenham uma cq:movedTo
e não são usados em um nó de conteúdo - eles têm uma contagem de zero. Ao usar esse processo de exclusão lento, o nó de conteúdo (ou seja, o cq:tags
) não precisa ser atualizada como parte da operação de movimentação ou mesclagem. As referências no cq:tags
são atualizadas automaticamente quando a variável cq:tags
for atualizada, por exemplo, por meio da caixa de diálogo de propriedades da página.
O coletor de lixo da tag é executado por padrão uma vez por dia. Isso pode ser configurado em:
http://localhost:4502/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
Pesquisa de tags e Lista de tags
A pesquisa por tags e a listagem de tags funcionam da seguinte maneira:
-
A pesquisa por TagID pesquisa as tags que têm a propriedade
cq:movedTo
definido como TagID e segue por meio docq:movedTo
TagIDs. -
A pesquisa por Título da tag pesquisa somente as tags que não têm uma
cq:movedTo
propriedade.
Tags em diferentes idiomas
Conforme descrito na documentação para administração de tags, na seção Gerenciamento de tags em diferentes idiomas, uma tag title
pode ser definido em idiomas diferentes. Uma propriedade sensível ao idioma é então adicionada ao nó da tag. Essa propriedade tem o formato jcr:title.<locale>
, por exemplo jcr:title.fr
para a tradução em francês. <locale>
deve ser uma sequência de caracteres de localidade ISO em letras minúsculas e usar "_" em vez de "-", por exemplo: de_ch
.
Quando a variável Animais é adicionada à variável Produtos página, o valor stockphotography:animals
é adicionado à propriedade cq:tags
do nó /content/geometrixx/en/products/jcr:content. A tradução é referenciada a partir do nó da tag .
A API do lado do servidor foi localizada title
-métodos relacionados:
-
- getLocalizedTitle(Locale locale)
- getLocalizedTitlePaths()
- getLocalizedtitles()
- getTitle(Locale locale)
- getTitlePath(Locale locale)
-
- canCreateTagByTitle(String tagTitlePath, Locale locale)
- createTagByTitle(String tagTitlePath, Locale)
- resolveByTitle(String tagTitlePath, Locale locale)
No AEM, o idioma pode ser obtido no idioma da página ou no idioma do usuário:
-
para recuperar o idioma da página em um JSP:
currentPage.getLanguage(false)
-
para recuperar o idioma do usuário em um JSP:
slingRequest.getLocale()
currentPage
e slingRequest
estão disponíveis em um JSP por meio do <cq:definedobjects> .
Para marcação, a localização depende do contexto como tag titles
pode ser exibido no idioma da página, no idioma do usuário ou em qualquer outro idioma.
Adicionar um novo idioma à caixa de diálogo Editar tag
O procedimento a seguir descreve como adicionar um novo idioma (finlandês) ao Editar tag caixa de diálogo:
-
Em CRXDE, edite a propriedade de vários valores
languages
do nó/content/cq:tags
. -
Adicionar
fi_fi
- que representa a localidade finlandesa - e salve as alterações.
O novo idioma (finlandês) agora está disponível na caixa de diálogo de tags das propriedades da página e no Editar tag ao editar uma tag no Marcação console.
/libs/wcm/core/resources/languages
.