我们正在使用适当的分页并使用KnockoutJS获取我们绑定到视图的产品。一切正常,花花公子。
我们公司希望记录每种产品的展示次数,因此我们可以轻松地将每个产品数组推送到dataLayer
(ecommerce
区块)。
通常的做法是不断添加和添加到此GTM dataLayer
对象,如果您在具有客户端过滤/排序/缩小的产品列表页面上,则此dataLayer
数组将转到变得非常臃肿,并可能对浏览器内存使用产生影响。
push()是否显着?或者我们可以简单地将新产品列表数组分配给dataLayer中的第一个索引吗?这会被GTM正确记录吗?
答案 0 :(得分:0)
继续推送到dataLayer数组是正确的,因为当前DOM中的所有产品都应该作为展示进行跟踪。如果您未跟踪所有当前展示,则在点击时无法跟踪该展示位置。每次推送时,Google跟踪代码管理器数据模型都会更新,将新推送中的产品展示次数合并到初始页面加载的内容中。
为了防止数组变得太大,我决定在新的dataLayer.push之前清除ajaxSuccess上的dataLayer
$(document).ajaxSuccess(function (event, xhr, settings) {
/* Clear dataLayer - prevents array getting too large */
dataLayer.length = 0;
dataLayer.push({
'ecommerce': {
'impressions': [
{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'list': 'Search Results',
'position': 1
}]
}
});
});