L’ensemble de services cloud par défaut peut être étendu à l’aide de types de service cloud personnalisés. Cela vous permet d’injecter un balisage personnalisé dans la page de manière structurée. Cela s’avérera particulièrement utile pour les fournisseurs de données analytiques tiers, tels que Google Analytics, Chartbeat, etc. Les pages enfants héritent des services cloud des pages parents, avec la possibilité d’annuler l’héritage à n’importe quel niveau.
Google Analytics est utilisé comme exemple dans ce guide détaillé de création d’un service cloud. Il se peut que certains éléments ne soient pas applicables à votre scénario d’utilisation.
En CRXDE Lite, créez un nouveau noeud sous /apps
:
acs
nt:folder
Créez un nouveau noeud sous /apps/acs
:
analytics
sling:Folder
Créez 2 nouveaux noeuds sous /apps/acs/analytics
:
sling:Folder
et
sling:Folder
Cliquez avec le bouton droit sur /apps/acs/analytics/components
. Sélectionnez Créer, suivi de Créer un composant. La boîte de dialogue qui s’ouvre alors vous permet de spécifier ce qui suit :
googleanalyticspage
Google Analytics Page
cq/cloudserviceconfigs/components/configpage
.hidden
Cliquez deux fois sur Suivant et spécifiez :
acs/analytics/templates/googleanalytics
Cliquez deux fois sur Suivant et cliquez sur OK.
Ajoutez une propriété à googleanalyticspage
:
cq:defaultView
html
Créez un nouveau fichier nommé content.jsp
sous /apps/acs/analytics/components/googleanalyticspage
, avec le contenu suivant :
<%@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>
Créez un nouveau noeud sous /apps/acs/analytics/components/googleanalyticspage/
:
Nom : dialog
Type : cq:Dialog
Propriétés :
title
String
Google Analytics Config
xtype
String
dialog
Créez un nouveau noeud sous /apps/acs/analytics/components/googleanalyticspage/dialog
:
Nom : items
Type : cq:Widget
Propriétés :
xtype
String
tabpanel
Créez un nouveau noeud sous /apps/acs/analytics/components/googleanalyticspage/dialog/items
:
items
cq:WidgetCollection
Créez un nouveau noeud sous /apps/acs/analytics/components/googleanalyticspage/dialog/items/items
:
Nom : tab1
Type : cq:Panel
Propriétés :
title
String
Config
Créez un nouveau noeud sous /apps/acs/analytics/components/googleanalyticspage/dialog/items/items/tab1
:
Nom : items
Type : nt:unstructured
Propriétés :
Nom : fieldLabel
Type : String
Valeur : ID de compte
Nom : fieldDescription
Type : String
Valeur: The account ID assigned by Google. Usually in the form UA-NNNNNN-N
Nom : name
Type : String
Valeur: ./accountID
Nom : validateOnBlur
Type : String
Valeur: true
Nom : xtype
Type : String
Valeur: textfield
Copiez /libs/cq/cloudserviceconfigs/components/configpage/body.jsp
dans /apps/acs/analytics/components/googleanalyticspage/body.jsp
et remplacez libs
par apps
à la ligne 34 et faites de la référence au script à la ligne 79 un chemin d’accès complet.
Créez un modèle sous /apps/acs/analytics/templates/
:
acs/analytics/components/googleanalyticspage
googleanalytics
Google Analytics Configuration
/etc/cloudservices/googleanalytics(/.*)?
/apps/acs/analytics/templates/googleanalytics
cq/cloudserviceconfigs/templates/configpage
(sur le noeud de modèle, pas le noeud jcr:content)/etc/designs/cloudservices/googleanalytics
(sur jcr:content)Créer un nouveau composant : /apps/acs/analytics/components/googleanalytics
.
Ajoutez le contenu suivant à 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><%
}
}
%>
Cela devrait générer le balisage personnalisé sur la base des propriétés de configuration.
Accédez à http://localhost:4502/miscadmin#/etc/cloudservices
et créez une page :
Google Analytics
googleanalytics
Revenez en CRXDE Lite et sous /etc/cloudservices/googleanalytics
, ajoutez la propriété suivante à jcr:content
:
componentReference
String
acs/analytics/components/googleanalytics
Accédez à la page Service nouvellement créée ( http://localhost:4502/etc/cloudservices/googleanalytics.html
) et cliquez sur + pour créer une nouvelle configuration :
/etc/cloudservices/googleanalytics
My First GA Config
Sélectionnez Google Analytics Configuration, puis cliquez sur Créer.
Saisissez un ID de compte ; par exemple, AA-11111111-1
. Cliquez sur OK.
Accédez à une page et ajoutez la nouvelle configuration dans les propriétés de la page, sous l’onglet Services cloud.
Le balisage personnalisé est ajouté à la page.