【问题标题】:DataLayer Query Google Tag ManagerDataLayer 查询谷歌标签管理器
【发布时间】:2015-07-24 13:38:40
【问题描述】:

我应该将dataLayer创建代码放在页面的什么地方?是否必须放在GTM sn-p之上?

我应该在哪里调用 dataLayer.push() 函数?如果 dataLayer 创建代码如下所示,是否应该始终放在代码中?

<script>
dataLayer=[{‘Pcategory’:’login’,‘Pno’:1}],
dataLayer.push({‘Pcategory’:’login’,Pno:1});
</script>

是否必须为我们推送的每个 dataLayer 声明一个事件?

在调用 dataLayer.push() 函数之前是否必须声明 dataLayer 或者 GTM 是否提供了内置的 dataLayer?

我应该把下面的代码放在哪里?如果我要申报,怎么办?

<a href="#" onclick="dataLayer.push({'event': 'GAEvent','pageURL': '/link-click/'});">Click Here...</a>

【问题讨论】:

    标签: google-analytics google-tag-manager universal-analytics


    【解决方案1】:

    你需要初始化GTM sn-p上面的dataLayer。您需要将所有应该在页面加载时可用的信息放在那里(页面加载时的 GTM sn-p 只能访问标记管理脚本之前的内容)。如果您在页面加载时不需要自定义数据,则 dataLayer 可能为空。还是需要声明,否则后面的推送会失败。

    当您想在页面加载后添加数据时使用推送,例如如果您想响应用户交互。

    您不需要为点击或表单提交添加自定义事件,因为 GTM 具有所谓的自动事件处理程序(即响应点击所需的 javascript 已经是 GTM 脚本的一部分)。

    如果您想在不是点击或表单提交(或计时器)的用户交互上触发标签,您需要一个自定义事件。例如。如果您运行 javascript 函数并且需要根据结果触发标签,则该函数可以将每个可能结果的自定义事件推送到 dataLayer,并且您可以相应地触发标签。

    例如,对于您的示例,您可以设置基于点击的触发器;如果链接文本不完整,您可以根据链接文本设置 pageUrl 变量(如果您使用点击触发器,则可以通过 {{Click Text}} 变量自动使用该变量)。因此,对于该示例,您根本不必使用任何自定义代码,只需使用 GTM 提供的代码即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2014-07-15
      • 2015-07-28
      • 2015-12-29
      • 2018-03-24
      • 2014-08-09
      相关资源
      最近更新 更多