Criação de um Cloud Service personalizado creating-a-custom-cloud-service
O conjunto padrão de Cloud Services pode ser estendido com tipos de Cloud Service personalizados. 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 Cloud Service são herdados das páginas principais para as páginas secundárias 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.jsp
em/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.jsp
para/apps/acs/analytics/components/googleanalyticspage/body.jsp
e alterelibs
paraapps
na 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/cloudservices
e crie uma página:- Título:
Google Analytics
- Nome:
googleanalytics
Volte para 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 Cloud Service.
-
A página terá a marcação personalizada adicionada a ela.