Я хочу реализовать расширенную электронную торговлю с помощью Диспетчера тегов Google, и я хочу отправить некоторые данные для тега Universal Analytics.
Я всегда создавал dataLayer перед сценарием GTM, но теперь мне нужно отправить больше данных с помощью dataLayer.push
И это не работает, datalaLayer.push
работает только в том случае, если это происходит непосредственно перед запуском сценария GTM.
Пример. Это работает:
<script>
<head>
dataLayer = [{
'google_tag_params': {
'ecomm_pagetype': 'category',
'ecomm_category': '{{ $resource->seo->h1 }}',
}
}];
dataLayer.push({
'ecommerce': {
'currencyCode': 'EUR',
'impressions': [
{
'id': '12312',
'price': 24,
'category': 'wfwefwerwerwer',
'position': 2,
'name': 'wfwefwerwerwer',
'brand': 'My Brand',
'list': 'Product List',
}
]
}
});
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');
</script>
</head>
Но если я использую dataLayer.push после того, как сценарий GTM не работает, данные не отправляются и не сообщается об ошибках.
У меня это не работает:
<head>
<script>
dataLayer = [{
'google_tag_params': {
'ecomm_pagetype': 'category',
'ecomm_category': '{{ $resource->seo->h1 }}',
}
}];
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');
</script>
</head>
<body>
//something content html here
<footer></footer>
<script>
dataLayer.push({
'ecommerce': {
'currencyCode': 'EUR',
'impressions': [
{
'id': '12312',
'price': 24,
'category': 'wfwefwerwerwer',
'position': 2,
'name': 'wfwefwerwerwer',
'brand': 'My Brand',
'list': 'Product List',
}
]
}
});
</script>
</body>
window.dataLayer.push
на самом деле ПАТЧИРОВАННЫЙ GTM для запуска собственного кода. Это уже не просто тупой массив, сидящий на странице. Вот как вы можете добавить к нему позже. Введитеwindow.dataLayer.push
в консоли браузера, и вы увидите, что это настраиваемая функция в gtm.js. - person Simon_Weaver   schedule 06.09.2019var
части объявления уровня данных. Вы можете использовать var или просто добавить его в пространство имен окнаwindow.dataLayer
- person dockeryZ   schedule 17.03.2021