增强型电子商务无法识别内部促销视图对象
Enhanced ecommerce don't recognize internal promotion view object
过去几周我一直在实施所有增强型电子商务轨道,感谢 Simo Ahava 的 blog,我可以成功完成大部分工作。但现在我正在为内部促销视图跟踪而苦苦挣扎。
我选择使用 True View Impressions 的概念来实现视图跟踪,同时基于 Simo 的工作,对于产品来说还不错。因此,我修改了 link 中的 customTasks 以跟踪内部促销,但由于某种原因,增强型电子商务无法识别 promoView 对象。但它正在识别 promoClick (?)。
我做了一个测试:我用 promoClick 代替了展示对象,它起作用了!所以,我强烈的客人,问题是它真的在我的对象上。可以看到我对象的格式here.
并说明对象的构造方式:
var targetElement = {{Click Element}},
event = {{Event}},
batch = window[promoBatchVariableName],
impressions = google_tag_manager[{{Container ID}}].dataLayer.get('ecommerce.promoView.promotions'),
ecomObj = { };
if (event === 'gtm.click') {
while (!targetElement.getAttribute(promoIdAttribute) && targetElement.tagName !== 'BODY') {
targetElement = targetElement.parentElement;
}
}
var latestPromoImpression = impressions.filter(function(impression) {
return impression.id === targetElement.getAttribute(promoIdAttribute);
}).shift();
var promoImpressionsArr = batch.map(function(id) {
return impressions.filter(function(impression) {
return impression.id === id;
}).shift();
});
if (event === 'gtm.elementVisibility'){
promoImpressionsArr[maxPromoBatch - 1] = latestPromoImpression;
}
console.log(ecomObj)
ecomObj.promoView = { promotions: promoImpressionsArr};
if (event === 'gtm.click') {
ecomObj.promoClick = {
promotions: [latestPromoImpression]
};
console.log("click")
}
return {
ecommerce: ecomObj
};
}
有人可以帮我出出主意吗?
这个回答只是为了结束问题!正如我在评论中指出的:
" 我发现了问题。它不仅在我的对象本身上。xD 问题是你在我们谈话开始时指出的未定义元素。我正在等待开发团队更改数据-我们网站页面上元素的属性,因为有时我们得不到任何单独的标识符变量。因此,与此同时,即使在这些情况下,我也实现了一种始终获取产品 ID 的方法,但由于标识符不存在在 CSS 选择器中,如果元素在 'entrance object' 中有一个 id,则该元素被设置为未定义。“
过去几周我一直在实施所有增强型电子商务轨道,感谢 Simo Ahava 的 blog,我可以成功完成大部分工作。但现在我正在为内部促销视图跟踪而苦苦挣扎。
我选择使用 True View Impressions 的概念来实现视图跟踪,同时基于 Simo 的工作,对于产品来说还不错。因此,我修改了 link 中的 customTasks 以跟踪内部促销,但由于某种原因,增强型电子商务无法识别 promoView 对象。但它正在识别 promoClick (?)。
我做了一个测试:我用 promoClick 代替了展示对象,它起作用了!所以,我强烈的客人,问题是它真的在我的对象上。可以看到我对象的格式here.
并说明对象的构造方式:
var targetElement = {{Click Element}},
event = {{Event}},
batch = window[promoBatchVariableName],
impressions = google_tag_manager[{{Container ID}}].dataLayer.get('ecommerce.promoView.promotions'),
ecomObj = { };
if (event === 'gtm.click') {
while (!targetElement.getAttribute(promoIdAttribute) && targetElement.tagName !== 'BODY') {
targetElement = targetElement.parentElement;
}
}
var latestPromoImpression = impressions.filter(function(impression) {
return impression.id === targetElement.getAttribute(promoIdAttribute);
}).shift();
var promoImpressionsArr = batch.map(function(id) {
return impressions.filter(function(impression) {
return impression.id === id;
}).shift();
});
if (event === 'gtm.elementVisibility'){
promoImpressionsArr[maxPromoBatch - 1] = latestPromoImpression;
}
console.log(ecomObj)
ecomObj.promoView = { promotions: promoImpressionsArr};
if (event === 'gtm.click') {
ecomObj.promoClick = {
promotions: [latestPromoImpression]
};
console.log("click")
}
return {
ecommerce: ecomObj
};
}
有人可以帮我出出主意吗?
这个回答只是为了结束问题!正如我在评论中指出的:
" 我发现了问题。它不仅在我的对象本身上。xD 问题是你在我们谈话开始时指出的未定义元素。我正在等待开发团队更改数据-我们网站页面上元素的属性,因为有时我们得不到任何单独的标识符变量。因此,与此同时,即使在这些情况下,我也实现了一种始终获取产品 ID 的方法,但由于标识符不存在在 CSS 选择器中,如果元素在 'entrance object' 中有一个 id,则该元素被设置为未定义。“