Criação de uma Cloud Service personalizada creating-a-custom-cloud-service
O conjunto padrão de Serviços em nuvem pode ser estendido com tipos personalizados de Cloud Service. Isso permite inserir marcação personalizada na página de forma estruturada. Isso é usado principalmente para provedores de análises de terceiros, por exemplo, Google Analytics, Chartbeat e assim por diante. Os serviços em nuvem são herdados das páginas pai para as páginas filho, com a capacidade de interromper a herança em qualquer nível.
-
No CRXDE Lite, crie um nó em
/apps:- Nome:
acs - Tipo:
nt:folder
- Nome:
-
Criar um nó em
/apps/acs:- Nome:
analytics - Tipo:
sling:Folder
- Nome:
-
Criar dois nós em
/apps/acs/analytics:- Nome: componentes
- Tipo:
sling:Folder
e
- Nome: modelos
- Tipo:
sling:Folder
-
Clique com o botão direito em
/apps/acs/analytics/components. Selecione Criar… seguido por Criar componente… A caixa de diálogo que é aberta permite especificar:- Rótulo:
googleanalyticspage - Título:
Google Analytics Page - Supertipo:
cq/cloudserviceconfigs/components/configpage - Grupo:
.hidden
- Rótulo:
-
Clique em Avançar duas vezes e especifique:
- Pais permitidos:
acs/analytics/templates/googleanalytics
Clique em Avançar duas vezes e em OK.
- Pais permitidos:
-
Adicionar uma propriedade a
googleanalyticspage:- Nome:
cq:defaultView - Valor:
html
- Nome:
-
Crie um arquivo com o nome
content.jspem/apps/acs/analytics/components/googleanalyticspage, com o seguinte conteúdo:code language-xml <%@page contentType="text/html" pageEncoding="utf-8"%><% %><%@include file="/libs/foundation/global.jsp"%><div> <div> <h3>Google Analytics Settings</h3> <ul> <li><div class="li-bullet"><strong>accountID: </strong><br><%= xssAPI.encodeForHTML(properties.get("accountID", "")) %></div></li> </ul> </div> -
Criar um nó em
/apps/acs/analytics/components/googleanalyticspage/:-
Nome:
dialog -
Tipo:
cq:Dialog -
Propriedades:
- Nome:
title - Tipo:
String - Valor:
Google Analytics Config - Nome:
xtype - Tipo:
String - Valor:
dialog
- Nome:
-
-
Criar um nó em
/apps/acs/analytics/components/googleanalyticspage/dialog:-
Nome:
items -
Tipo:
cq:Widget -
Propriedades:
- Nome:
xtype - Tipo:
String - Valor:
tabpanel
- Nome:
-
-
Criar um nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items:- Nome:
items - Tipo:
cq:WidgetCollection
- Nome:
-
Criar um nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items:-
Nome: tab1
-
Tipo:
cq:Panel -
Propriedades:
- Nome:
title - Tipo:
String - Valor:
Config
- Nome:
-
-
Criar um nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items/tab1:-
Nome: itens
-
Tipo:
nt:unstructured -
Propriedades:
-
Nome:
fieldLabel -
Tipo: cadeia de caracteres
-
Valor: ID da conta
-
Nome:
fieldDescription -
Tipo:
String -
Valor:
The account ID assigned by Google. Usually in the form UA-NNNNNN-N -
Nome:
name -
Tipo:
String -
Valor:
./accountID -
Nome:
validateOnBlur -
Tipo:
String -
Valor:
true -
Nome:
xtype -
Tipo:
String -
Valor:
textfield
-
-
-
Copie
/libs/cq/cloudserviceconfigs/components/configpage/body.jsppara/apps/acs/analytics/components/googleanalyticspage/body.jspe alterelibsparaappsna linha 34 e torne a referência de script na linha 79 um caminho totalmente qualificado. -
Criar um modelo em
/apps/acs/analytics/templates/:- com Tipo de Recurso =
acs/analytics/components/googleanalyticspage - com Rótulo =
googleanalytics - com Título=
Google Analytics Configuration - com allowedPath =
/etc/cloudservices/googleanalytics(/.*)? - com allowedChildren =
/apps/acs/analytics/templates/googleanalytics - com sling:resourceSuperType =
cq/cloudserviceconfigs/templates/configpage(no nó do modelo, não no nó jcr:content) - com cq:designPath =
/etc/designs/cloudservices/googleanalytics(em jcr:content)
- com Tipo de Recurso =
-
Criar um componente:
/apps/acs/analytics/components/googleanalytics.Adicionar o seguinte conteúdo a
googleanalytics.jsp:code language-xml <%@page import="org.apache.sling.api.resource.Resource, org.apache.sling.api.resource.ValueMap, org.apache.sling.api.resource.ResourceUtil, com.day.cq.wcm.webservicesupport.Configuration, com.day.cq.wcm.webservicesupport.ConfigurationManager" %> <%@include file="/libs/foundation/global.jsp" %><% String[] services = pageProperties.getInherited("cq:cloudserviceconfigs", new String[]{}); ConfigurationManager cfgMgr = resource.getResourceResolver().adaptTo(ConfigurationManager.class); if(cfgMgr != null) { String accountID = null; Configuration cfg = cfgMgr.getConfiguration("googleanalytics", services); if(cfg != null) { accountID = cfg.get("accountID", null); } if(accountID != null) { %> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '<%= accountID %>']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'https://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script><% } } %>Isso deve gerar a marcação personalizada com base nas propriedades de configuração.
-
Navegue até
http://localhost:4502/miscadmin#/etc/cloudservicese crie uma página:- Título:
Google Analytics - Nome:
googleanalytics
Volte para o CRXDE Lite e, em
/etc/cloudservices/googleanalytics, adicione a seguinte propriedade ajcr:content:- Nome:
componentReference - Tipo:
String - Valor:
acs/analytics/components/googleanalytics
- Título:
-
Navegue até a página Serviço recém-criada (
http://localhost:4502/etc/cloudservices/googleanalytics.html) e clique em + para criar uma configuração:- Configuração pai:
/etc/cloudservices/googleanalytics - Título:
My First GA Config
Escolha Configuração do Google Analytics e clique em Criar.
- Configuração pai:
-
Digite uma ID da Conta, por exemplo,
AA-11111111-1. Clique em OK. -
Navegue até uma página e adicione a configuração recém-criada nas propriedades da página, na guia Serviços da nuvem.
-
A página terá a marcação personalizada adicionada a ela.