обновление массива в gtm dataLayer - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть переменная gtm, которая использует переменную уровня данных для элементов строки корзины.

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

Когда корзина обновляется, я устанавливаю пользовательское событие 'onCartUpdate' и обновляю dataLayer новым массивом lineitems корзины. Это работает правильно при изменении количества - новая переменная 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 голосов
/ 02 ноября 2018

Кажется, я понял это ... Это связано с версией переменной: https://www.simoahava.com/gtm-tips/data-layer-variable-versions-explained/

Я установил его как версию 2, которая по умолчанию является той, которая должна объединять объекты только при их обновлении, а не полностью перезаписывать объект. Я перешел на версию 1, и теперь она работает так, как я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...