这有点令人困惑。假设我已经实现了包含页面详细信息的数据层。该页面有2篇文章,每次点击都会被重定向。现在假设跟踪是这样的,一旦用户点击卡,将在工具中报告卡(h1)名称。我在不使用数据层的情况下实现了这种情况。 (Looking for custom script in Adobe DTM data element?)。
下面提到了我已定义数据层的代码。在DTM控制台中,我创建了数据元素,并使用datalayer对象进行映射。对于卡名称 - DDO.pageData.cardname。还创建了基于事件的规则并使用此数据元素进行映射。这里的问题是,无论何时我点击一篇文章,它都会在单个evar中获取两篇文章的h1。理想情况下,它应该只取得被点击的文章的价值。请建议。
<article class="mu-item">
<a href="www.google.com" data-tags="test" target="_blank">
<div>
<h1>This is a test text for tracking</h1>
<p>This was the day when the South Stand at Old Trafford, the stadium where he played around half of his 758 matches for United, was officially renamed in his honour before his beloved Reds took on Everton in the Barclays Premier League.<br><br>
</p>
</div>
</a>
</article>
<article class="mu-item">
<a href="www.facebook.com" data-tags="{{displaytag_2}}" target="_blank">
<div>
<h1>This is new card</h1>
<p>This was the day when the South Stand at Old Trafford.<br><br>
</p>
</div>
</a>
</article>
<a href="#" class="link"><span>some text</span></a>
<script type="text/javascript">
DDO = {} // Data Layer Object Created
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
}
</script>
<script type="text/javascript">_satellite.pageBottom();</script>
答案 0 :(得分:2)
正如其他人所提到的,了解哪个h1
值相关的唯一方法是在点击事件期间捕获它。
正如我在comments of your other question
中提到的那样[..] DTM目前没有将
this
的引用传递给在配置区域中创建的数据元素
没有办法解决这个问题。当我向您展示另一个问题(规则条件中的自定义脚本)时,您必须在点击事件期间捕获它。正如其他人所提到的那样,从技术上讲,让它通过你的数据层是一个不必要的步骤。实际上有它的优点和缺点,但这是一个不同的讨论。
假设你决定这样做......
转到规则&gt; 数据元素,然后点击创建新数据元素。
根据您使用的约定命名您的数据元素。对于数据层,我个人喜欢将其命名为完整的数据层路径,例如: “DDO.pageData.cardName”。
对于类型,请选择“JS对象”。
对于路径,请输入完整路径DDO.pageData.cardName
单击保存数据元素以保存数据元素。
接下来,转到基于事件的规则。它应该仍然具有相同的事件类型(单击)和元素标记或选择器(article.mu-item)。
在规则条件中,选择“数据&gt;自定义”以添加自定义js代码框。
在此处,您仍需要根据this
获取信息。但是,您不是使用_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%
答案 1 :(得分:0)
您的问题是您有多个菜单项和标题。您可能必须创建一个包含所有标题的数组(这样才能很难获得正确的单击条目)或仅在单击元素后填充数据层,因此它始终包含所选元素的数据。 / p>
然而,正如我所指出的,你很有可能不需要这个。如果使用css选择器执行基于事件的单击规则,则可以使用DTM自动创建的数据元素 - 它称为%this%
并包含单击的DOM节点。您应该能够使用%this.textContent%
获取标题内的文字(标题中有一个嵌套的段落,我不确定它是否有效,因此您必须允许事件在事件规则配置中冒出来)。