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 uma marcação personalizada na página de forma estruturada. Isso será usado principalmente para provedores de análises de terceiros, por exemplo, Google Analytics, Chartbeat etc. Cloud Services são herdadas de páginas pai para páginas filho com a capacidade de quebrar a herança em qualquer nível.
-
No CRXDE Lite, crie um novo nó em
/apps
:- Nome:
acs
- Tipo:
nt:folder
- Nome:
-
Crie um novo nó em
/apps/acs
:- Nome:
analytics
- Tipo:
sling:Folder
- Nome:
-
Crie 2 novos 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
. Selecionar Criar… seguida de Criar componente… A caixa de diálogo que é aberta permite especificar:- Rótulo:
googleanalyticspage
- Título:
Google Analytics Page
- Super Type:
cq/cloudserviceconfigs/components/configpage
- Grupo:
.hidden
- Rótulo:
-
Clique em Próximo duas vezes e especifique:
- Primários permitidos:
acs/analytics/templates/googleanalytics
Clique em Próximo duas vezes e clique em OK.
- Primários permitidos:
-
Adicionar uma propriedade a
googleanalyticspage
:- Nome:
cq:defaultView
- Valor:
html
- Nome:
-
Crie um novo arquivo com o nome
content.jsp
under/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>
-
Crie um novo 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:
-
-
Crie um novo nó em
/apps/acs/analytics/components/googleanalyticspage/dialog
:-
Nome:
items
-
Tipo:
cq:Widget
-
Propriedades:
- Nome:
xtype
- Tipo:
String
- Valor:
tabpanel
- Nome:
-
-
Crie um novo nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items
:- Nome:
items
- Tipo:
cq:WidgetCollection
- Nome:
-
Crie um novo nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items
:-
Nome: tab1
-
Tipo:
cq:Panel
-
Propriedades:
- Nome:
title
- Tipo:
String
- Valor:
Config
- Nome:
-
-
Crie um novo nó em
/apps/acs/analytics/components/googleanalyticspage/dialog/items/items/tab1
:-
Nome: items
-
Tipo:
nt:unstructured
-
Propriedades:
-
Nome:
fieldLabel
-
Tipo: String
-
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
-
-
-
Copiar
/libs/cq/cloudserviceconfigs/components/configpage/body.jsp
para/apps/acs/analytics/components/googleanalyticspage/body.jsp
e alterarlibs
paraapps
na linha 34 e fazer da referência do script na linha 79 um caminho totalmente qualificado. -
Crie um novo 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 novo componente:
/apps/acs/analytics/components/googleanalytics
.Adicione 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 produzir a marcação personalizada com base nas propriedades de configuração.
-
Navegar para
http://localhost:4502/miscadmin#/etc/cloudservices
e criar uma nova página:- Título:
Google Analytics
- Nome:
googleanalytics
Volte em 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 no botão + para criar uma nova configuração:- Configuração primária:
/etc/cloudservices/googleanalytics
- Título:
My First GA Config
Choose Configuração do Google Analytics e clique em Criar.
- Configuração primária:
-
Insira um 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, no Cloud Services guia .
-
A página terá a marcação personalizada adicionada a ela.