Google 标签管理器 - 在不使用数据层的情况下收集数据属性

Google Tag Manager - collect data attributes without using the datalayer

我试图在单击包含它的元素时收集数据属性的值,但我想在不使用数据层的情况下进行。

我目前通过使用 javascript 将数据属性推送到数据层来使用数据层,一切正常,但总是修改代码很烦人,我想在不使用 javascript.

我的代码如下所示:

<a href="<mylink>" class="link_class" data-shop="aaa" data-product="bbb">link label</a>

在 Google 跟踪代码管理器中,我使用名称“Generic_Dataset_product”创建了一个“自动事件变量”(不确定它在英语中是这样称呼的,我的 GTM 是法语的)在我 select“元素属性”和作为属性的地方,我尝试了很多东西但没有成功,比如数据产品,gtm.data-产品,产品,...

为了使用这个变量,我创建了一个简单的触发器来检测对 class“link_class”的点击并关联一个事件(event_category、event_action、event_label) 我在其中添加了具有正确名称 {{Generic_Dataset_product}} 的收集变量。我没有看到预期值,而是看到“track_event”。

有没有办法通过这种方式收集数据?我想使用“自动事件变量”从 src、数据属性和代码中的其他元素收集内容,因为 GTM 中没有为此预定义的变量。

谢谢

在 GTM 中获取点击元素的任意属性是一项微不足道的任务。并且有很多方法可以做到这一点。我更喜欢 CJS,因为我经常需要在那里进行突变和消毒。你的问题是你没有正确调试它。

首先,创建一个简单的 CJS 变量,如下所示:

function(){
  return {{Click Element}}.getAttribute("data-shop");
}

现在打开您的预览调试器并实际去检查所有变量 GTM 集 您点击 。包括您的新 CJS 变量以及您的自动事件变量。如果您没有从那里找到您要找的东西,请返回这里并向我们展示实际调试器的屏幕截图,让我们从那里进行调试。

启用{{Click Element}}的方法如下:

没有理由回避数据层。数据层已经包含点击的元素,数据属性是该元素的属性,因此您可以通过点符号来解决它们:

这为您节省了自定义 javascript(如果您计划实施适当的内容安全策略,您可能希望避免这种情况,因为自定义脚本需要使用 eval)。