当我尝试设置DTM时,当我在页面上显示s_code(并且在DTM中选择“s_code present”)时,页面加载规则不起作用,我很快就遇到了问题。我已经与Adobes支持了几个星期了,他们一直没能弄明白(事件规则工作正常)。我设置了一个测试页面,基本上只有s_code和DTM,没有别的
https://devpsstaging.phelpsagency.com/s_code_present-clean.html
如果使用Omnibug和DTM调试器等工具进行检查,您将看到通过DTM触发了页面加载规则(“页面加载测试”),但它不会与实际图像请求一起发送。您还可以查看页面本身链接的调试信息:http://i.imgur.com/AlBvJK4.png
任何人都可以帮助弄清楚为什么会这样吗?页面加载规则当前设置为在页面顶部触发,但无论我将其设置为(top,bottom,dom,onload - 页面加载规则触发但未包含在图像请求中),我都会得到相同的结果。
有谁知道发生了什么事?
答案 0 :(得分:1)
页面代码已存在选项旁边是问号(?)图标。如果你点击它,你会得到一个弹出窗口,告诉你:
阻止动态代码管理安装Adobe Analytics页面 代码如果您的网站上已存在此代码。此功能允许 您可以使用动态标记管理添加到现有标记 实施而不是从头开始。一定要正确 选中此框时设置跟踪器变量名称。
不可否认,弹出式描述具有误导性。它给人的印象是它根本不构建新的s
对象,而是引用现有的对象。我发现事实并非如此。 Migrating to Dynamic Tag Management文档条目稍微清楚一点,但我认为他们需要更明确地说明这个选项真正做了什么。
基本上,该选项并不意味着允许代码与站点上的另一个现有实现并行运行Adobe Analytics。它也不仅仅是建立已经存在的东西。
这意味着让您开始迁移过程并保存您的工作,然后在删除旧的页面实现后,取消选中该框以让DTM开始输出它。所以,它实际上不会构建任何东西......直到你取消选中它。 TBH,我真的没有看到这个选项的重点,看看如何在没有批准或发布的情况下保存,但.. ::耸肩::不管怎样。
我实际上更关心的是,当您选中此选项时,您的Adobe Analytics代码正在为基于事件的规则工作..现在,这是真正的问题。
配置第二个实例
如果您实际上正在尝试实现两个实例:
您可能已经注意到上面的链接,Adobe声称您可以在您的页面上拥有第二个Adobe Analytics(Omniture / SiteCatalyst)代码实例。它的工作方式是你指定一个不同的对象名称(默认的s
命名空间以外的东西。你也不会检查 Adobe Analytics页面代码是否已经存在选项)。
但是,我应该警告你这样做。基本上,这只会更改顶级对象命名空间。 Adobe Analytics代码具有许多基础函数和变量,这些函数和变量位于全局命名空间中,没有任何公开的方式来更改它们。在我通过DTM测试实现时,它不会更改任何这些底层名称空间。
事情是,我已经在野外观察了一些"出血"两个顶级命名空间之间的变量和值,我看到一个实例完全覆盖和/或破坏另一个。这可能是由于许多因素造成的,例如库版本的差异,或者在恰当的情况下进行s.t
或s.tl
调用;我真的不知道。但我已经看过了。在多个客户端的多个实现中反复进行。因此,我根本不相信页面上的多个Adobe Analytics实例。
答案 1 :(得分:1)
这个问题有点老了。但是我找了很长时间的答案,然后与Jan Exner进行了一次谈话,他找到了答案。它有点像脏,但有效:)你可以在s.doPlugins中使用脚本作为插件。代码如下:
s.mergeDTMShadowData = function(toolID, overwrite) {
// overwrite defaults to true
if (typeof overwrite === 'undefined' || overwrite === null) {
overwrite = true;
}
// check if DTM is present
if (typeof _satellite !== 'undefined') {
var analyticsTool = _satellite.tool[toolID];
// is the analytics tool enabled?
var enabled = true;
if (analyticsTool.settings.initTool !== undefined && analyticsTool.settings.initTool === false) {
enabled = false;
}
if (enabled === false) {
// copy events
var eventArray = analyticsTool.events;
if (eventArray && eventArray.length > 0) {
for (ev in eventArray) {
s.events = s.apl(s.events, eventArray[ev], ',', 1);
}
}
// copy props & eVars
var varArray = analyticsTool.varBindings;
if (varArray) {
for (variable in varArray) {
if (overwrite || typeof s[variable] === 'undefined' || s[variable] === null) {
s[variable] = varArray[variable];
}
}
}
}
} else {
console.log('DTM not found, bailing out...');
}
}
变成一个插件并直接在DTM中使用它,完整的解决方案如下所示:
s.mergeDTMShadowData=new Function("t","o",""
+"if(typeof o==='undefined'||o===null){o=true;}if(typeof _satellite!="
+"='undefined'){var a=_satellite.tool[t];var e=true;if(a.settings.ini"
+"tTool!==undefined&&a.settings.initTool===false){e=false;}if(e===fal"
+"se){var b=a.events;if(b&&b.length>0){for(c in b){s.events=s.apl(s.e"
+"vents,b[c],',',1);}}var d=a.varBindings;if(d){for(f in d){if(o||typ"
+"eof s[f]==='undefined'||s[f]===null){s[f]=d[f];}}}}}else{console.lo"
+"g('DTM not found, bailing out...');}");
s.doPlugins = (function() {
return function() {
s.mergeDTMShadowData("c7b417741f9f0d2435c6dd064ad9fc12",true);
// now call the orignal
var result = s_doPlugins.apply(this,arguments);
return result;
};
}());
将其放入页面加载规则的第三方/ Javascript部分,您就完成了。现有遗留代码无需更改!没有!
需要更多信息如何运作,在博客文章中有一个战利品: http://webanalyticsfordevelopers.com/2015/11/17/dtm-how-to-amend-an-existing-analytics-setup/
我只想在这里写下来,以便以后来这里的人都能找到它。
答案 2 :(得分:0)
要添加到Crayon所说的内容,如果您选择"页面代码存在"选项,Adobe Analytics工具将无法运行。但是,此选项允许您通过JS /第三方标记编辑器添加到现有页面代码。