Adobe Client Data Layer introduce un metodo standard per raccogliere e memorizzare dati sull’esperienza di un visitatore su una pagina web e quindi semplificare l’accesso a tali dati. Adobe Client Data Layer è indipendente dalla piattaforma, ma è completamente integrato nei componenti core per l’utilizzo con AEM.
Vuoi abilitare Adobe Client Data Layer sul tuo sito AEM? Vedi le istruzioni qui.
Puoi ottenere un'idea delle funzionalità integrate di Adobe Client Data Layer solo utilizzando gli strumenti per sviluppatori del browser e il sito di riferimento WKND live.
Screenshot qui sotto tratto dal browser Chrome.
Passa a https://wknd.site
Apri gli strumenti per sviluppatori e immetti il seguente comando nella Console:
window.adobeDataLayer.getState();
Inspect la risposta per visualizzare lo stato corrente del livello di dati su un sito AEM. Dovresti visualizzare informazioni sulla pagina e sui singoli componenti.
Invia un oggetto dati a un livello dati immettendo quanto segue nella console:
window.adobeDataLayer.push({
"component": {
"training-data": {
"title": "Learn More",
"link": "learn-more.html"
}
}
});
Esegui di nuovo il comando adobeDataLayer.getState()
e trova la voce per training-data
.
Quindi aggiungi un parametro di percorso per restituire solo lo stato specifico di un componente:
window.adobeDataLayer.getState('component.training-data');
È consigliabile attivare qualsiasi codice personalizzato basato su un evento dal livello dati. Quindi, esplora la registrazione e l'ascolto di eventi diversi.
Immetti il seguente metodo helper nella console:
function getDataObjectHelper(event, filter) {
if (event.hasOwnProperty("eventInfo") && event.eventInfo.hasOwnProperty("path")) {
var dataObject = window.adobeDataLayer.getState(event.eventInfo.path);
if (dataObject != null) {
for (var property in filter) {
if (!dataObject.hasOwnProperty(property) || (filter[property] !== null && filter[property] !== dataObject[property])) {
return;
}
return dataObject;
}
}
}
return;
}
Il codice riportato sopra controllerà l'oggetto event
e utilizzerà il metodo adobeDataLayer.getState
per ottenere lo stato corrente dell'oggetto che ha attivato l'evento. Il metodo helper esaminerà quindi i criteri filter
e verrà restituito solo se l'elemento dataObject
corrente soddisfa il filtro.
Sarà importante non aggiornare il browser durante questo esercizio, altrimenti il JavaScript della console verrà perso.
Quindi, immetti un gestore eventi che verrà chiamato quando un componente Teaser viene visualizzato all’interno di un Carosello.
function teaserShownHandler(event) {
var dataObject = getDataObjectHelper(event, {"@type": "wknd/components/teaser"});
if(dataObject != null) {
console.log("Teaser Shown: " + dataObject['dc:title']);
console.log(dataObject);
}
}
Il teaserShownHandler
chiamerà il metodo getDataObjectHelper
e trasmetterà un filtro di wknd/components/teaser
come @type
per filtrare gli eventi attivati da altri componenti.
Quindi, invia un listener di eventi sul livello dati per ascoltare l'evento cmp:show
.
window.adobeDataLayer.push(function (dl) {
dl.addEventListener("cmp:show", teaserShownHandler);
});
L’evento cmp:show
viene attivato da molti componenti diversi, ad esempio quando una nuova diapositiva viene visualizzata nel componente Carosello o quando è selezionata una nuova scheda nel componente Tab .
Nella pagina attiva le diapositive del carosello e osserva le istruzioni della console:
Rimuovi il listener di eventi dal livello dati per interrompere l'ascolto dell'evento cmp:show
:
window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push(function(dl) {
dl.removeEventListener("cmp:show", teaserShownHandler);
});
Torna alla pagina e attiva le diapositive del carosello. Osserva che non vengono più registrate istruzioni e che l’evento non viene ascoltato.
Quindi, immetti un gestore di eventi che verrà chiamato quando l'evento di visualizzazione della pagina viene attivato:
function pageShownHandler(event) {
var dataObject = getDataObjectHelper(event, {"@type": "wknd/components/page"});
if(dataObject != null) {
console.log("Page Shown: " + dataObject['dc:title']);
console.log(dataObject);
}
}
Il tipo di risorsa wknd/components/page
viene utilizzato per filtrare l’evento.
Quindi, invia un listener di eventi sul livello dati per ascoltare l'evento cmp:show
, chiamando pageShownHandler
.
window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push(function (dl) {
dl.addEventListener("cmp:show", pageShownHandler);
});
Dovresti visualizzare immediatamente un’istruzione console attivata con i dati della pagina:
L'evento cmp:show
per la pagina viene attivato su ogni caricamento di pagina nella parte superiore della pagina. Potresti chiedere, perché il gestore eventi è stato attivato, quando la pagina è chiaramente già stata caricata?
Questa è una delle caratteristiche uniche di Adobe Client Data Layer, in quanto è possibile registrare listener di eventi prima o dopo che il livello dati è stato inizializzato. Questa è una caratteristica fondamentale per evitare le condizioni di razza.
Il livello dati mantiene una matrice di coda di tutti gli eventi che si sono verificati in sequenza. Per impostazione predefinita, il Livello dati attiva i callback degli eventi per gli eventi che si sono verificati in passato e per gli eventi in futuro. È possibile filtrare gli eventi solo in passato o in futuro. Ulteriori informazioni sono disponibili nella documentazione.
Consulta la seguente esercitazione per scoprire come utilizzare il livello dati client Adobe basato su eventi per raccogliere i dati di pagina e inviarli ad Adobe Analytics.
Oppure scopri come personalizzare Adobe Client Data Layer con i componenti AEM