搭配核心元件使用Adobe Client Data Layer data-layer-core-components
Adobe使用者端資料層的目標是提供標準化方法,公開和存取任何指令碼的任何型別的資料,以減少檢測網站所需的工作量。
Adobe Client Data Layer不受平台限制,但已完全整合至核心元件,以與AEM搭配使用。
和核心元件一樣,GitHub上也提供Adobe Client Data Layer的程式碼以及其開發人員檔案。 本檔案概述核心元件與Data Layer的互動方式,但完整技術詳細資訊將推遲至GitHub檔案說明。
DATA_LAYER_INTEGRATION.md
檔案中設定的完整路徑。安裝與啟用 installation-activation
截至核心元件2.9.0版,Data Layer以AEM使用者端程式庫形式隨核心元件發佈,無需安裝。 所有產生的專案 AEM專案原型v. 24+ 預設會包含已啟動的資料層。
若要手動啟動資料層,您必須建立 內容感知設定 適用於:
-
在下方建立下列結構
/conf/<mySite>
資料夾,其中<mySite>
是您網站的專案名稱:/conf/<mySite>/sling:configs/com.adobe.cq.wcm.core.components.internal.DataLayerConfig
- 其中每個節點都有
jcr:primaryType
設定為nt:unstructured
.
-
新增布林值屬性,稱為
enabled
並將其設定為true
.WKND參考網站中DataLayerConfig的位置
-
新增
sling:configRef
屬性至jcr:content
您的網站節點在下/content
(例如:/content/<mySite>/jcr:content
)並設為/conf/<mySite>
上一步驟中的。 -
啟用後,您可以在編輯器之外載入網站的頁面,以驗證啟用狀態,例如,使用 檢視已發佈 選項中設定的預設值。 Inspect頁面來源和
<body>
標籤應包含屬性data-cmp-data-layer-enabled
code language-html <body class="page basicpage" id="page-id" data-cmp-data-layer-enabled> <script> window.adobeDataLayer = window.adobeDataLayer || []; adobeDataLayer.push({ page: JSON.parse("{\x22page\u002D6c5d4b9fdd\x22:{\x22xdm:language\x22:\x22en\x22,\x22repo:path\x22:\x22\/content\/wknd\/language\u002Dmasters\/en.html\x22,\x22xdm:tags\x22:[],\x22xdm:template\x22:\x22\/conf\/wknd\/settings\/wcm\/templates\/landing\u002Dpage\u002Dtemplate\x22,\x22@type\x22:\x22wknd\/components\/page\x22,\x22dc:description\x22:\x22WKND is a collective of outdoors, music, crafts, adventure sports, and travel enthusiasts that want to share our experiences, connections, and expertise with the world.\x22,\x22dc:title\x22:\x22WKND Adventures and Travel\x22,\x22repo:modifyDate\x22:\x222020\u002D09\u002D29T07:50:13Z\x22}}"), event:'cmp:show', eventInfo: { path: 'page.page\u002D6c5d4b9fdd' } }); </script>
-
您也可以開啟瀏覽器的開發人員工具,並在主控台中
adobeDataLayer
JavaScript物件應該可以使用。 輸入下列命令以取得目前頁面的「資料層」狀態:code language-javascript window.adobeDataLayer.getState();
支援的元件 supported-components
下列元件支援資料層。
另請參閱 元件觸發的事件。
核心元件資料結構描述 data-schemas
以下是核心元件搭配Data Layer使用的結構描述清單。
元件/容器專案結構描述 item
元件/容器專案結構描述會用於下列元件中:
元件/容器專案結構描述的定義如下。
id: { // component ID
@type // resource type
repo:modifyDate // last modified date
dc:title // title
dc:description // description
xdm:text // text
xdm:linkURL // link URL
parentId // parent component ID
}
下列專案 事件 與元件/容器專案結構描述相關:
cmp:click
頁面結構描述 page
「頁面」綱要由下列元件使用:
「頁面」綱要的定義如下。
id: {
@type
repo:modifyDate
dc:title
dc:description
xdm:text
xdm:linkURL
parentId
xdm:tags // page tags
repo:path // page path
xdm:template // page template
xdm:language // page language
}
A cmp:show
事件會在頁面載入時觸發。 此事件會從緊接在開頭下方的內嵌JavaScript傳送 <body>
標籤,使其成為Data Layer事件佇列中最早的事件。
容器結構描述 container
容器結構描述可供下列元件使用:
容器結構描述的定義如下。
id: {
@type
repo:modifyDate
dc:title
dc:description
xdm:text
xdm:linkURL
parentId
shownItems // array of the displayed item IDs
}
下列專案 事件 與容器結構描述相關:
cmp:click
cmp:show
cmp:hide
影像結構描述 image
影像結構描述由以下元件使用:
影像結構的定義如下。
id: {
@type
repo:modifyDate
dc:title
dc:description
xdm:text
xdm:linkURL
parentId
image // asset detail (see below section)
}
下列專案 事件 與影像結構描述相關:
cmp:click
資產結構 asset
此資產結構描述會用於 影像元件。
資產結構的定義如下。
id: {
repo:id // asset UUID
repo:path // asset path
@type // asset resource type
xdm:tags // asset tags
repo:modifyDate
}
下列專案 事件 與資產結構描述相關:
cmp:click
內容片段結構描述 content-fragment
內容片段結構描述是由 內容片段元件。
內容片段結構的定義如下。
id: {
@type
repo:modifyDate
dc:title
dc:description
xdm:text
xdm:linkURL
parentId
elements // array of the Content Fragment elements
}
用於內容片段元素的結構描述如下。
{
xdm:title // title
xdm:text // text
}
核心元件事件 events
核心元件會透過Data Layer觸發許多事件。 與資料層互動的最佳實務是 註冊事件監聽器 和 則 根據事件型別和/或觸發事件的元件採取動作。 這將避免與非同步指令碼發生可能的競爭情況。
以下為AEM核心元件所提供的現成事件:
cmp:click
— 按一下可點按的元素(具有data-cmp-clickable
attribute)讓資料層觸發cmp:click
事件。cmp:show
和cmp:hide
— 操作摺疊式功能表(展開/摺疊)、輪播(下一個/上一個按鈕)和標籤(標籤選取)元件會導致資料層觸發cmp:show
和cmp:hide
個事件。 Acmp:show
事件也會在頁面載入時傳送,且預期為第一個事件。cmp:loaded
— 使用頁面上的核心元件填入Data Layer後, Data Layer會立即觸發cmp:loaded
事件。
元件觸發的事件 events-components
下表列出觸發事件的標準核心元件以及這些事件。
cmp:show
和 cmp:hide
cmp:click
cmp:click
cmp:show
和 cmp:hide
cmp:click
cmp:click
cmp:show
cmp:show
和 cmp:hide
cmp:click
事件路徑資訊 event-path-info
AEM核心元件觸發的每個Data Layer事件將包含具有以下JSON物件的裝載:
eventInfo: {
path: '<component-path>'
}
位置 <component-path>
是資料層中觸發事件的元件的JSON路徑。 值,可透過以下方式取得: event.eventInfo.path
,這點很重要,因為它可作為引數用於 adobeDataLayer.getState(<component-path>)
會擷取觸發事件的元件目前狀態,允許自訂程式碼存取其他資料並將其新增至Data Layer。
例如:
function logEventObject(event) {
if(event.hasOwnProperty("eventInfo") && event.eventInfo.hasOwnProperty("path")) {
var dataObject = window.adobeDataLayer.getState(event.eventInfo.path);
console.debug("The component that triggered this event: ");
console.log(dataObject);
}
}
window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push(function (dl) {
dl.addEventListener("cmp:show", logEventObject);
});
教學課程
想要更詳細地探索資料層和核心元件嗎? 請檢視此實作教學課程.