AEM 6.4 chegou ao fim do suporte estendido e esta documentação não é mais atualizada. Para obter mais detalhes, consulte nossa períodos de assistência técnica. Encontre as versões compatíveis here.
Defina novos tipos de armazenamentos e módulos do ContextHub quando os fornecidos não atenderem aos requisitos da solução.
As lojas ContextHub são criadas a partir de candidatos a lojas registradas. Para criar uma loja personalizada, você precisa criar e registrar um candidato de loja.
O arquivo javascript que inclui o código que cria e registra o candidato da loja deve ser incluído em um pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:
contexthub.store.[storeType]
O [storeType]
parte da categoria é storeType
com o qual o candidato da loja está registrado. (Consulte Registrando um candidato a armazenamento do ContextHub). Por exemplo, para o storeType de contexthub.mystore
, a categoria da pasta da biblioteca do cliente deve ser contexthub.store.contexthub.mystore
.
Para criar um candidato de loja, use a variável ContextHub.Utils.inheritance.inherit
para estender um dos armazenamentos base:
Observe que cada loja base estende a variável ContextHub.Store.Core
armazenar.
O exemplo a seguir cria a extensão mais simples do ContextHub.Store.PersistedStore
candidato à loja:
myStoreCandidate = function(){};
ContextHub.Utils.inheritance.inherit(myStoreCandidate,ContextHub.Store.PersistedStore);
Realisticamente, os candidatos a loja personalizada definirão funções adicionais ou substituirão a configuração inicial da loja. Vários candidatos à loja de amostras são instalados no repositório abaixo /libs/granite/contexthub/components/stores
. Para aprender com essas amostras, use o CRXDE Lite para abrir os arquivos javascript.
Registre um candidato a loja para integrá-lo à estrutura do ContextHub e permitir que as lojas sejam criadas a partir dele. Para registrar um candidato de loja, use a variável registerStoreCandidate
da ContextHub.Utils.storeCandidates
classe .
Ao registrar um candidato de loja, forneça um nome para o tipo de loja. Ao criar uma loja do candidato, você usa o tipo de loja para identificar o candidato em que se baseia.
Ao registrar um candidato a loja, você indica sua prioridade. Quando um candidato de loja é registrado usando o mesmo tipo de loja que um candidato de loja já registrado, o candidato com prioridade mais alta é usado. Portanto, você pode substituir candidatos de loja existentes por novas implementações.
ContextHub.Utils.storeCandidates.registerStoreCandidate(myStoreCandidate,
'contexthub.mystorecandidate', 0);
Na maioria dos casos, só é necessário um candidato e a prioridade pode ser definida como 0
, mas se você estiver interessado, poderá saber mais sobre registros mais avançados, O que permite que uma das poucas implementações da loja seja escolhida com base na condição de javascript (applies
) e a prioridade do candidato.
Criar tipos de módulo de interface de usuário personalizada quando os instalado com o ContextHub não atenda aos seus requisitos. Para criar um tipo de módulo de interface do usuário, crie um novo renderizador de módulo de interface do usuário estendendo o ContextHub.UI.BaseModuleRenderer
e registrá-la com ContextHub.UI
.
Para criar um renderizador de módulo de interface do usuário, crie um Class
objeto que contém a lógica que renderiza o módulo da interface do usuário. No mínimo, sua classe deve executar as seguintes ações:
Estender o ContextHub.UI.BaseModuleRenderer
classe . Essa classe é a implementação básica para todos os renderizadores de módulo da interface do usuário. O Class
objeto define uma propriedade chamada extend
que você usa para nomear essa classe como aquela que está sendo estendida.
Forneça uma configuração padrão. Crie um defaultConfig
propriedade. Essa propriedade é um objeto que inclui as propriedades definidas para a variável contexthub.base
Módulo de interface do usuário e quaisquer outras propriedades necessárias.
A fonte para ContextHub.UI.BaseModuleRenderer
está localizado em /libs/granite/contexthub/code/ui/container/js/ContextHub.UI.BaseModuleRenderer.js. Para registrar o renderizador, use o registerRenderer
do método ContextHub.UI
classe . É necessário fornecer um nome para o tipo de módulo. Quando os administradores criam um módulo de interface com base nesse renderizador, eles especificam esse nome.
Crie e registre a classe renderer em uma função anônima de execução automática. O exemplo a seguir é baseado no código-fonte do módulo da interface do usuário contexthub.browserinfo . Este módulo de interface é uma extensão simples do ContextHub.UI.BaseModuleRenderer
classe .
;(function() {
var SurferinfoRenderer = new Class({
extend: ContextHub.UI.BaseModuleRenderer,
defaultConfig: {
icon: 'coral-Icon--globe',
title: 'Browser/OS Information',
storeMapping: {
surferinfo: 'surferinfo'
},
template:
'<p>{{surferinfo.browser.family}} {{surferinfo.browser.version}}</p>' +
'<p>{{surferinfo.os.name}} {{surferinfo.os.version}}</p>'
}
});
ContextHub.UI.registerRenderer('contexthub.browserinfo', new SurferinfoRenderer());
}());
O arquivo javascript que inclui o código que cria e registra o renderizador deve ser incluído em um pasta da biblioteca do cliente. A categoria da pasta deve corresponder ao seguinte padrão:
contexthub.module.[moduleType]
O [moduleType]
parte da categoria é moduleType
com o qual o renderizador de módulo é registrado. Por exemplo, para a variável moduleType
de contexthub.browserinfo
, a categoria da pasta da biblioteca do cliente deve ser contexthub.module.contexthub.browserinfo
.