Как создать переменную уровня данных GTM со сложным массивом

В Диспетчере тегов Google существует предопределенный тип переменной «Переменная уровня данных» с вводом для имени переменной. На стандартном единственном уровне пар ключ / значение это легко.

var dataLayer = [{"mykey":"myvalue"}];

Учитывая этот уровень данных, вы просто используете mykey в качестве переменной для ввода в GTM. Однако, если вы используете спецификацию CEDDL (http://www.w3.org/2013/12/ceddl-201312.pdf), вы получите глубоко вложенный массив:

dataLayer = [
  {
    "product": [
      {
        "category": {
          "primaryCategory": "Auto Loans"
        },
        "productInfo": {
          "productID": "1",
          "productName": "PurchaseLoan",
          "description": "Auto finance loan"
        },
        "security": [
          "Analytics",
          "Personalization",
          "Recommendations"
        ]
      }
    ]
  }
]

Итак, реальный вопрос: как мне получить доступ к значению productName в приведенном выше примере?

В стандартном Javascript вы можете получить к нему доступ так: dataLayer[1].product[0].productInfo.productName или dataLayer.1.product.1.productInfo.productName

... но ни один из этих вариантов не работает (с dataLayer.1 в качестве первого узла или без него).

Это интерфейс для ввода имени переменной:  введите описание изображения здесь


person developdaly    schedule 11.11.2015    source источник


Ответы (1)


Когда вы определяете свою переменную DataLayer в GTM, вам не нужно указывать «dataLayer» в имени переменной, т.е. это должно быть просто:

product.0.productInfo.productName
person nyuen    schedule 12.11.2015
comment
Я пробовал это раньше, и это не сработало, но мне пришлось настроить триггер, чтобы он срабатывал при готовности DOM вместо просмотра страницы. - person developdaly; 12.11.2015