Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Adobe 使用数据层跟踪基于事件的规则_Adobe_Adobe Analytics - Fatal编程技术网

Adobe 使用数据层跟踪基于事件的规则

Adobe 使用数据层跟踪基于事件的规则,adobe,adobe-analytics,Adobe,Adobe Analytics,这有点令人困惑。假设我实现了一个包含页面细节的数据层。该页面有2篇文章,每次点击都会被重定向。现在假设跟踪是这样的,一旦用户点击卡片,工具中就会报告卡片的名称(h1)。我在没有使用数据层的情况下实现了这个场景。() 下面提到了我定义数据层的代码。在DTM控制台中,我创建了数据元素,并使用datalayer对象进行映射。对于卡名-DDO.pageData.cardname。还创建了基于事件的规则并与此数据元素映射。这里的问题是,每当我点击一篇文章时,它都会在一次评估中获取这两篇文章的h1。理想情况

这有点令人困惑。假设我实现了一个包含页面细节的数据层。该页面有2篇文章,每次点击都会被重定向。现在假设跟踪是这样的,一旦用户点击卡片,工具中就会报告卡片的名称(h1)。我在没有使用数据层的情况下实现了这个场景。()

下面提到了我定义数据层的代码。在DTM控制台中,我创建了数据元素,并使用datalayer对象进行映射。对于卡名-DDO.pageData.cardname。还创建了基于事件的规则并与此数据元素映射。这里的问题是,每当我点击一篇文章时,它都会在一次评估中获取这两篇文章的h1。理想情况下,它应该只获取正在单击的文章的值。请建议


DDO={}//已创建数据层对象
var pageObj={};
var pageDOM=$('.mu item');
pageObj.DestinationURL=$(pageDOM.find('a').attr('href');
pageObj.cardName=$(pageDOM.find('h1').text();
DDO.pageData={
“pageName”:document.title,
“DestinationURL”:pageObj.DestinationURL,
“cardname”:pageObj.cardname
}  

_satellite.pageBottom()您的问题是您有多个菜单项和标题。您必须创建一个包含所有标题的数组(这将使单击很难获得正确的条目),或者仅在单击元素后填充数据层,以便它始终包含所选元素的数据


然而,正如我指出的,你很有可能不需要这个。如果使用css选择器执行基于事件的单击规则,则DTM会自动创建一个数据元素,该元素称为
%this%
,包含单击的DOM节点。您应该能够使用
%this.textContent%
获取标题内的文本(您的标题中有一个嵌套段落,我不确定它是否为有效的HTML,因此您必须允许事件在事件规则配置中冒泡)。

您的问题是您有多个菜单项和标题。您必须创建一个包含所有标题的数组(这将使单击很难获得正确的条目),或者仅在单击元素后填充数据层,以便它始终包含所选元素的数据


然而,正如我指出的,你很有可能不需要这个。如果使用css选择器执行基于事件的单击规则,则DTM会自动创建一个数据元素,该元素称为
%this%
,包含单击的DOM节点。您应该能够使用
%this.textContent%
获取标题内的文本(您的标题中有一个嵌套段落,我不确定它是否为有效的HTML,因此您必须允许事件在事件规则配置中冒泡)。

如其他人所述,知道哪个
h1
值相关的唯一方法是在单击事件期间捕获它

正如我在报告中提到的

[…]DTM当前未将对该
的引用传递给在配置区域中创建的数据元素

这是没有办法的。正如我在其他问题(规则条件中的自定义脚本)上向您展示的那样,您必须在单击事件期间捕获它。正如其他人提到的,让它通过您的数据层在技术上是一个不必要的步骤。实际上这样做有其利弊,但这是一个不同的讨论

假设你决心这么做

转到规则数据元素,然后单击创建新数据元素

根据您使用的惯例命名数据元素。对于数据层,我个人喜欢将其命名为完整的数据层路径,例如“DDO.pageData.cardName”

对于类型,选择“JS对象”

对于路径
,放置完整路径DDO.pageData.cardName

单击保存数据元素保存数据元素

接下来,转到基于事件的规则。它应该仍然具有相同的事件类型(单击),以及元素标记或选择器(article.mu项)

在规则条件中,选择“数据>自定义”添加自定义js代码框

在这里,您仍然需要根据
获取信息。但是,您将不使用
\u satellite.setVar()
创建动态数据元素,而是将值推送到数据层

示例:

var articleTitle = $(this).find('h1').text()||'';
window.DDO
 &&
window.DDO.pageData
 &&
(window.DDO.pageData.cardName=articleTitle);
return true;
注意:我正在使用jQuery语法获取
h1
文本。基于您之前的问题,您当时在这方面遇到了问题,因此我向您展示了vanilla js版本。不确定你是否解决了这个问题,但你明白了原则


现在,您可以在规则的其余字段中使用数据层引用的数据元素
%DDO.pageData.cardName%

正如其他人所提到的,知道哪个
h1
值相关的唯一方法是在单击事件期间捕获它

正如我在报告中提到的

[…]DTM当前未将对该的引用传递给在配置区域中创建的数据元素

这是没有办法的。正如我在其他问题(规则条件中的自定义脚本)上向您展示的那样,您必须在单击事件期间捕获它。正如其他人提到的,让它通过您的数据层在技术上是一个不必要的步骤。实际上这样做有其利弊,但这是一个不同的讨论

假设你决心这么做

转到规则数据元素,然后单击创建新数据元素

根据您使用的惯例命名数据元素。对于数据层,我个人喜欢使用na