Para fins de trabalho programático com tags ou extensão de tags em um aplicativo AEM personalizado, este documento descreve o uso da
que interage com o
Para obter informações relacionadas à marcação:
A execução do estrutura de marcação no AEM permite o gerenciamento de tags e conteúdo de tags usando a API JCR. TagManager
garante que as tags sejam inseridas como valores na variável cq:tags
as propriedades da matriz de cadeias de caracteres não estão duplicadas, ela remove TagID
s apontando para tags e atualizações não existentes TagID
s para tags movidas ou mescladas. TagManager
O usa um ouvinte de observação JCR que reverte quaisquer alterações incorretas. As classes principais estão na com.day.cq.tagging pacote:
JcrTagManagerFactory
- retorna uma implementação baseada em JCR de um TagManager
. É a implementação de referência da API de marcação.TagManager
- permite a resolução e a criação de tags por caminhos e nomes.Tag
- define o objeto de tag.Para recuperar um TagManager
instância, é necessário ter um JCR Session
e para chamar getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
No contexto Sling típico, também é possível adaptar a uma TagManager
do ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
A Tag
pode ser recuperado por meio da variável 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 o do Sling diretamente 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 só possa ser convertida de um recurso (não um nó), uma tag pode ser convertida para um nó e um recurso:
Node node = tag.adaptTo(Node.class);
Resource node = tag.adaptTo(Resource.class);
Adaptando-se diretamente do Node
para Tag
não é possível, porque Node
não implementa o Sling Adaptable.adaptTo(Class)
método.
// 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);
O válido RangeIterator
usar é:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
É 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);
O coletor de lixo da tag é um serviço em segundo plano que limpa as tags ocultas e não usadas. Tags ocultas e não usadas são as tags abaixo /content/cq:tags
que tenham um cq:movedTo
e não são usados em um nó de conteúdo. Elas 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 mover ou mesclar. As referências no cq:tags
são atualizados automaticamente quando a variável cq:tags
A propriedade do é 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://<host>:<port>/system/console/configMgr/com.day.cq.tagging.impl.TagGarbageCollector
A pesquisa de tags e a listagem de tags funcionam da seguinte maneira:
TagID
O pesquisa as tags que têm a propriedade cq:movedTo
definir como TagID
e prossegue através do cq:movedTo
TagID
scq:movedTo
propriedade.Uma tag title
podem ser definidos em diferentes idiomas. Em seguida, uma propriedade que diferencia idiomas é adicionada ao nó da tag. Essa propriedade tem o formato jcr:title.<locale>
, por exemplo, jcr:title.fr
pela tradução francesa. <locale>
deve ser uma sequência de caracteres de localidade ISO em minúsculas e usar sublinhado (_
) em vez de hífen/traço (-
), por exemplo: de_ch
.
Por exemplo, quando a variável Animais é adicionada à guia Produtos página, o valor stockphotography:animals
é adicionado à propriedade cq:tags
do nó /content/wknd/en/products/jcr:content
. A tradução é referenciada a partir do nó da tag.
A API do lado do servidor localizou title
Métodos relacionados ao:
com.day.cq.tagging.Tag
getLocalizedTitle(Locale locale)
getLocalizedTitlePaths()
getLocalizedTitles()
getTitle(Locale locale)
getTitlePath(Locale locale)
com.day.cq.tagging.TagManager
canCreateTagByTitle(String tagTitlePath, Locale locale)
createTagByTitle(String tagTitlePath, Locale 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 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.
O procedimento a seguir descreve como adicionar um novo idioma (por exemplo, finlandês) à Editar tag diálogo:
languages
do nó /content/cq:tags
.fi_fi
, que representa o local da Finlândia, e salve as alterações.O finlandês agora está disponível na caixa de diálogo de tag das propriedades da página e no Editar tag caixa de diálogo ao editar uma tag no Marcação console.
O novo idioma precisa ser um dos idiomas reconhecidos pelo AEM, ou seja, precisa estar disponível como um nó abaixo /libs/wcm/core/resources/languages
.