在无法全面评估您的 DTM 设置的情况下,我不确定我能否就最佳解决方法给出明确的答案,但您可以尝试一件事:
在您最终拨打s.t 或s.tl 的规则中,请执行以下操作:
在条件部分的规则条件下,选择数据>自定义并点击“添加条件”按钮。
然后在代码框中,输入:
var s = _satellite.getToolsByType('sc')[0].getS();
s.clearVars();
return true;
更新:您发表了以下评论:
感谢您的回答。不幸的是,我的规则都是直接调用规则,DTM 中似乎没有“条件”选项。我有
在 - “自定义页面代码” - 分析工具下添加了上述代码
设置 - 但有趣的是“自定义页面代码”没有得到调用
直接调用规则。我将尝试通过“javascript/3rd”运行它
派对标签”看看会发生什么。我可以尝试其他想法吗?谢谢
你是对的,直接调用规则只有一个条件,那就是 _satellite.track('string') 调用中传递的字符串。老实说,我不知道 Adobe 为什么要这样做。也许有一天,Adobe 会扩展它以允许您为直接调用规则设置其他条件,并且基本上只是将“字符串”条件重新标记为直接调用规则标识符,以指定调用哪一个。基本上,他们应该把它当作页面加载和基于事件的规则,除非你只是用那个“字符串”来调用它。顺便说一句,这就是在核心代码(甚至是页面加载和基于事件的规则)中已经在内部调用规则的方式,因此对于 Adobe 来说扩展 Direct Call 并不会那么规则。
另外,您是对的,将代码添加到工具设置中的“自定义页面代码”部分也不起作用。该代码块仅在 DTM 库的初始加载时执行。说到在该自定义页面代码部分中设置内容.. 如果您在那里设置其他 Omniture 变量,您应该注意其他“错误”。长话短说,DTM 不只是在第一次加载时创建一个 s 对象,然后在规则期间引用它;当触发规则时,它会创建一个全新的s 对象。因此,如果您在这些工具配置自定义代码框中设置任何内容(例如,手动设置 linkTrackVars 或更常见的是使用 s_doPlugins,这在被烘焙到 DTM 时也明显缺失......)它们将不会被保留直接规则调用! (但是,它确实将其从直接调用保存到直接调用。我知道.. 令人困惑和不一致,对吧?)
因此,这将为您提供解决方案.. 基本上,您需要禁用让 DTM 触发 s.t 或 s.tl 调用。只需将 Adobe Anlytics 部分中的单选按钮设置为“禁用”,然后在 Javascript/第三方标签 部分的代码框中手动设置您需要设置的所有内容。在那里,您可以放置该代码,然后设置您需要设置的任何其他 Omniture 变量。如果您需要引用数据元素,可以使用 _satellite.getVar('element_name') 来获取它们,而不是在 Adobe Analytics 部分中使用的 %element_name% 占位符。然后,用s.t() 或s.tl() 给你自己打电话。换句话说.. 将其视为普通的 Omniture 实现,其中代码恰好托管在 DTM 中,而不是使用 DTM 内置的任何内容。
更新:AppMeasurement 1.8.0
AppMeasurement Release Notes(向下滚动到 JavaScript 1.8.0)
Adobe 引入了两个可以注册回调函数的事件:
s.registerPreTrackCallback
s.registerPostTrackCallback
这样就可以注册一个回调函数,触发s.clearVars()
示例
s.registerPreTrackCallback(function() {
s.clearVars();
});