O conjunto padrão de Cloud Services pode ser estendido com tipos de Cloud Service personalizados. Isso permite que você insira a 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 herdados de páginas pai para páginas secundárias com a capacidade de quebrar a herança em qualquer nível.
Este guia passo a passo para a criação de um novo Cloud Service é um exemplo usando Google Analytics. Tudo pode não se aplicar ao seu caso de uso.
No CRXDE Lite, crie um novo nó em /apps
:
acs
nt:folder
Crie um novo nó em /apps/acs
:
analytics
sling:Folder
Crie 2 novos nós em /apps/acs/analytics
:
sling:Folder
e
sling:Folder
Clique com o botão direito do mouse em /apps/acs/analytics/components
. Selecione Criar… seguido por Criar componente… A caixa de diálogo que é aberta permite especificar:
googleanalyticspage
Google Analytics Page
cq/cloudserviceconfigs/components/configpage
.hidden
Clique duas vezes em Próximo e especifique:
acs/analytics/templates/googleanalytics
Clique duas vezes em Avançar e clique em OK.
Adicione uma propriedade a googleanalyticspage
:
cq:defaultView
html
Crie um novo arquivo chamado content.jsp
em /apps/acs/analytics/components/googleanalyticspage
, com o seguinte conteúdo:
<%@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:
title
String
Google Analytics Config
xtype
String
dialog
Crie um novo nó em /apps/acs/analytics/components/googleanalyticspage/dialog
:
Nome: items
Tipo: cq:Widget
Propriedades:
xtype
String
tabpanel
Crie um novo nó em /apps/acs/analytics/components/googleanalyticspage/dialog/items
:
items
cq:WidgetCollection
Crie um novo nó em /apps/acs/analytics/components/googleanalyticspage/dialog/items/items
:
Nome: tab1
Tipo: cq:Panel
Propriedades:
title
String
Config
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
Copie /libs/cq/cloudserviceconfigs/components/configpage/body.jsp
para /apps/acs/analytics/components/googleanalyticspage/body.jsp
e altere libs
para apps
na linha 34 e faça da referência de script na linha 79 um caminho totalmente qualificado.
Crie um novo modelo em /apps/acs/analytics/templates/
:
acs/analytics/components/googleanalyticspage
googleanalytics
Google Analytics Configuration
/etc/cloudservices/googleanalytics(/.*)?
/apps/acs/analytics/templates/googleanalytics
cq/cloudserviceconfigs/templates/configpage
(no nó do modelo, não no nó jcr:content)/etc/designs/cloudservices/googleanalytics
(em jcr:content)Criar novo componente: /apps/acs/analytics/components/googleanalytics
.
Adicione o seguinte conteúdo a googleanalytics.jsp
:
<%@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.
Navegue até http://localhost:4502/miscadmin#/etc/cloudservices
e crie uma nova página:
Google Analytics
googleanalytics
Volte ao CRXDE Lite e, em /etc/cloudservices/googleanalytics
, adicione a seguinte propriedade a jcr:content
:
componentReference
String
acs/analytics/components/googleanalytics
Navegue até a página Serviço recém-criada ( http://localhost:4502/etc/cloudservices/googleanalytics.html
) e clique em + para criar uma nova configuração:
/etc/cloudservices/googleanalytics
My First GA Config
Escolha Configuração de Google Analytics e clique em Criar.
Insira 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 Services.
A página terá a marcação personalizada adicionada.