dataLayer是什麼?該怎麼用? GTM高級使用技巧解析

Photo of author
Written By CMO

dataLayer是區分初級和高級GTM用戶的分水嶺
dataLayer是區分初級和高級GTM用戶的分水嶺

Google Tag Manager是一個免費的超級應用,它在Google Analytics Suite中非常重要,可以大幅簡化我們收集網站數據用於分析,還可以提升用戶體驗並增進SEO的效果。HubSpot One以往多次在Google Tag Manager教程中使用了dataLayer。比如《如何利用GTM記錄下拉菜單選項》和《如何根據不同地區訪客來觸發GTM標籤》。在GTM中dataLayer是一個底層核心概念,理解datalayer有助於幫助我們更好地管理各種觸發條件。本文我們就聊一下dataLayer是什麼,我們又該如何使用datalayer。

dataLayer是什麼?

dataLayer是GTM在瀏覽器中增加的環境變量,它是一個全局變量。是window下的一個子對象。它是一個範圍為頁面生命週期的變量,而不是以會話為生命週期的變量。因此如果你的網站是SPA(single page application)要格外注意dataLayer的生命週期。

如果你的網站使用了GTM那麼你可以通過下面的方法找到dataLayer。

  1. Chrome瀏覽器按F12,打開DevTools。選擇Console。
  2. 在命令行中輸入window.dataLayer或者直接dataLayer。
  3. 執行命令在返回結果中展開dataLayer。
在Chrome瀏覽器中查看datalayer
在Chrome瀏覽器中查看datalayer

我們在上圖的結果中可以看到,其實dataLayer是一個數組,包含了各個對象。第一次我們運行了window.dataLayer獲得了4個dataLayer對象,第二次獲得了6個對象。這從length屬性可以看出變化,原因是HubSpot One的網頁有計時器,觸發了gtm.timer30和gtm.timer事件,GTM把這兩個事件推送到了dataLayer。在GTM的調試模式下你也可以在Data Layer欄看到數組裡的所有dataLayer對象。

值得一提的是gtm.js是一個JS庫。它是GTM的container標籤用到的。如果這個dataLayer對像不存在那麼你的GTM就掛了,因為當gtm.js載入時,會觸發gtm.js這個事件。

gtm.dom對應DOMContentLoaded,你可以在Console右面第二個network中的下方狀態欄找到。當事件發生時,gtm.dom會被推送到dataLayer。

另外gtm.load也是container標籤用到。如果這個不存在,那麼表示網站內容還未被完全讀取。 load這個事件我們已經在以往的文章中多次介紹。當網頁完全載入後gtm.load事件將被觸發,被推送到dataLayer。

如何使用dataLayer?

你可以在HTML中添加<script>標籤放入dataLayer的值,格式為json。

 < script >
    dataLayer = [ { 'author' : 'Hermes Ma' } ] ; </ script >

上面這個例子中我們定義了dataLayer,它包含了一個對象,對象裡有一個值。

這裡有一個新手常犯的錯誤,就是將這段代碼放到GTM的安裝代碼之後。這樣的話GTM的container建立起的dataLayer隊列就會被覆蓋導致GTM完全失效。

由於設計和部署的非常有可能不是同一人,為了避免這種情況。建議始終用dataLayer的push方法進行賦值。範例如下:

 < script >
    window. dataLayer = window. dataLayer || [ ] ;
    dataLayer. push ( { 'author' : 'Hermes Ma' } ) ; </ script >

首先我們會檢查一下是否dataLayer已經存在了,如果已存在那麼就自己等於自己,否則就新建一個空數組。然後把要賦的值推入隊列。

這裡我們要理解GTM的dataLayer機制,它是一個隊列,而且永遠返回最新的那個對象的值。要謹記的是不推薦通過JS去更改已經被推入dataLayer的對象的值,用push

只需要將新的值push進去就行了
只需要將新的值push進去就行了

在上面的例子中如果我們使用Data Layer Variable來獲取authorgender的值的話GTM會分別從最後一個對像開始找是否有author的值和gender的值,最終會得到Herme Mafemale

在GTM中使用dataLayer

dataLayer為我們提供了理想的存取數據的容器。在揭開了dataLayer的神秘面紗後我們再說說如何在GTM中使用dataLayer。

建立Data Layer Variable
建立Data Layer Variable

首先是從dataLayer中獲取所存儲的值。你可以通過Data Layer Variable來實現。接著之前的例子,上圖中填入Data Layer Variable Name,假設是author ,那麼你便可以獲得值Hermes Ma

其次是將值推入dataLayer。就如我們之前強調的,除了初始的賦值你可以在HTML文檔中hardcode,我們推薦用push方法。我們可以在Custom HTML Tag中用JS來完成這一過程。

我們甚至可以通過將event推入dataLayer來自定義事件。如dataLayer.push({‘event’ : ‘read more’});

觸發器:read more事件
觸發器:read more事件

你可以新建一個Custom Event的Trigger來標誌push了event後的各種騷操作。

至此,我們介紹了dataLayer和如何在GTM中使用dataLayer,它可以讓你的數據和事件管理更加靈活。歡迎通過HubSpot One的微信公眾號參加討論。