更新gtm dataLayer中的数组

时间:2018-11-01 21:32:21

标签: google-tag-manager

我有一个gtm变量,该变量将数据层变量用于购物车订单项。

 dataLayer = [{
 'cartLineitems': [
    {'productCode':'test1','quantity':1},
    {'productCode':'test2','quantity':1},
    {'productCode':'test3','quantity':1}
]
 }];

更新购物车时,我将设置自定义事件“ onCartUpdate”,并使用新的购物车lineitems数组更新dataLayer。更改数量后,此方法可以正常工作-新的gtm变量显示具有更新数量的数组的第一个元素。

dataLayer.push({
       'event': 'onCartUpdate',
       'cartLineitems': [
            {'productCode':'test1','quantity':2}},
            {'productCode':'test2','quantity':1}},
            {'productCode':'test3','quantity':1}
    });

但是,当客户从购物车中删除商品时,gtm似乎看不到该数组现在包含的元素更少了。在调试器中,它显示具有2个项目的最新版本的数据层,然后具有“此消息后的数据层值:”并显示原始值。变量标签中显示的值是包含3个项目的版本。

dataLayer.push({
   'event': 'onCartUpdate',
   'cartLineitems': [
        {'productCode':'test1','quantity':2}},
        {'productCode':'test2','quantity':1}}
});

有人知道如何正确更新数组的数据层变量吗?

1 个答案:

答案 0 :(得分:1)

我想我已经弄清楚了...这与变量的版本有关:https://www.simoahava.com/gtm-tips/data-layer-variable-versions-explained/

我将其设置为版本2,这是默认情况下的版本2,仅在更新对象时才将它们串联起来,而不是完全覆盖对象。我切换到了版本1,现在可以像我现在想要的那样工作。