【问题标题】:How to dataLayer.push using GTM Custom Templates?如何使用 GTM 自定义模板进行 dataLayer.push?
【发布时间】:2019-10-07 09:56:59
【问题描述】:

我有 GTM 自定义 HTML 标记,它拦截页面上调用的 dataLayer.push,检查它是否存在电子商务,如果检测到它,则将电子商务数据发送到再营销像素。

现在我正在尝试将此标签包装在 GTM 自定义模板中。 为此,我需要从我的 GTM 自定义模板中创建一个 dataLayer.push。

我研究了官方文档:
https://developers.google.com/tag-manager/templates/api#createqueue

有一个使用 GTM Sandbox JavaScript 的 dataLayer.push 方法示例:

const dataLayerPush = createQueue('dataLayer');
dataLayerPush({'event': 'test_push'});

但如果我运行示例中的代码,我会得到以下结果:

dataLayer
(6) [{…}, {…}, lj, {…}, {…}, {…}, push: ƒ]
0: {pageType: "main"}
1: {gtm.start: 1570440507302, event: "gtm.js", gtm.uniqueEventId: 2172}
2: lj
fi:
event: "test_push"
gtm.uniqueEventId: 7689
__proto__: Object
__proto__: Object
3: {event: "gtm.dom", gtm.uniqueEventId: 13084}
4: {event: "productImpression", ecommerce: {…}, gtm.uniqueEventId: 18479}
5: {event: "gtm.load", gtm.uniqueEventId: 24517}
push: ƒ ()
length: 6
__proto__: Array(0)

如您所见,dataLayer[2] 不是我的推动力。

什么是'lj'?
什么是'fi'?

如果我尝试使用不同的名称(不是“dataLayer”)创建另一个全局数组,一切正常:

const newDataLayerPush = createQueue('newDataLayer');
newDataLayerPush ({'event': 'test_push'});

输出:

[{…}]
0: {event: "test_push"}
length: 1
__proto__: Array(0)

如何使用 GTM 自定义模板向 dataLayer 发送推送?

【问题讨论】:

  • 你解决了这个问题吗?

标签: javascript google-tag-manager


【解决方案1】:

对于 dataLayer 推送,您可以使用自定义 HTML模板并通过页面视图触发它然后添加以下代码

<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'test_push'
 });
</script>

【讨论】:

    猜你喜欢
    • 2020-03-08
    • 2021-01-08
    • 2010-12-08
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多