Para a finalidade de trabalhar programaticamente com tags ou estender tags em um aplicativo AEM personalizado, esta página descreve o uso da variável
que interage com o
Para obter informações relacionadas à marcação, consulte :
A implementação da estrutura de marcação no AEM permite o gerenciamento de tags e conteúdo de tags usando a API JCR. O TagManager garante que as tags digitadas como valores na propriedade da matriz de sequência cq:tags
não sejam duplicadas, ele remove TagIDs apontando para tags não existentes e atualiza TagIDs para tags movidas ou unidas. O TagManager usa um ouvinte de observação JCR que reverte quaisquer alterações incorretas. As classes principais estão no pacote com.day.cq.tagging:
TagManager
. É a implementação de referência da API de marcação.TagManager
- permite resolver e criar tags por caminhos e nomes.Tag
- define o objeto de tag.Para recuperar uma instância do TagManager, é necessário ter um JCR Session
e chamar getTagManager(Session)
:
@Reference
JcrTagManagerFactory jcrTagManagerFactory;
TagManager tagManager = jcrTagManagerFactory.getTagManager(session);
No contexto Sling típico, você também pode se adaptar a TagManager
a partir de ResourceResolver
:
TagManager tagManager = resourceResolver.adaptTo(TagManager.class);
Um Tag
pode ser recuperado por meio de 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
para o JCR Nodes
, você pode usar diretamente o mecanismo adaptTo
do Sling se tiver o recurso (por exemplo, /content/cq:tags/default/my/tag
):
Tag tag = resource.adaptTo(Tag.class);
Enquanto uma tag só pode ser convertida *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);
Não é possível adaptar diretamente de Node
para Tag
, porque Node
não implementa o método Sling Adaptable.adaptTo(Class)
.
// 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 RangeIterator
válido a ser usado é:
com.day.cq.commons.RangeIterator
tagManager.deleteTag(tag);
É possível usar o serviço de replicação ( Replicator
) com tags, pois elas são do tipo nt:hierarchyNode
:
replicator.replicate(session, replicationActionType, tagPath);
CQ.tagging.TagInputField
é um widget de formulário para inserir tags. Ele tem um menu pop-up para seleção de tags existentes, inclui o preenchimento automático e muitos outros recursos. Seu xtype é tags
.
O coletor de lixo de tags é um serviço em segundo plano que limpa as tags que estão ocultas e não são usadas. As tags ocultas e não usadas são tags abaixo de /content/cq:tags
que têm uma propriedade cq:movedTo
e não são usadas 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, a propriedade cq:tags
) não precisa ser atualizado como parte da operação de movimentação ou mesclagem. As referências na propriedade cq:tags
são atualizadas automaticamente quando a propriedade cq:tags
é 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
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
definida como TagID e segue por cq:movedTo
TagIDs.
A pesquisa por Título da tag pesquisa somente as tags que não têm uma propriedade cq:movedTo
.
Conforme descrito na documentação para administração de tags, na seção Gerenciar tags em diferentes idiomas, uma tag title
pode ser definida em diferentes idiomas. 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 minúsculas e usar "_" em vez de "-", por exemplo: de_ch
.
Quando a tag Animais é adicionada à página Produtos, 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 localizou title
métodos relacionados:
Em AEM, o idioma pode ser obtido do idioma da página ou do 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 da <cq:definedobjects> tag .
Para marcação, a localização depende do contexto, já que a tag titles
pode ser exibida 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 (finlandês) à caixa de diálogo Tag Edit:
Em CRXDE, edite a propriedade de vários valores languages
do nó /content/cq:tags
.
Adicione 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 na caixa de diálogo Editar tag ao editar uma tag no console Marcação.
O novo idioma precisa ser um dos idiomas reconhecidos AEM, ou seja, precisa estar disponível como um nó abaixo de /libs/wcm/core/resources/languages
.