Вставка кода Google tag manager через сохранение ID GoogleTagManager в настройках контекста.
как можно вставить код счетчика Google Tag Manager через настройки контекста? Чтобы для каждого контекста прописывать номер счетчика в настройки контекста? А код Google Tag Manager был универсальный. Например я хочу сохранить номер ID GoogleTagManager в настройках контекста, а код сниппета/чанка вставки кода GoogleTagManager сделать универсальный один для всех контекстов?
Комментарии: 4
Делюсь наработкой до которой сам дошел путем долгих мучений и борьбы с fenom. Вроде работает, может кому пригодится:
Сниппет вставки кода в (вызываем соответственно сниппет в блоке head, в коде добавлены пробелы до и после { и } чтобы fenom не ругался):
Сниппет вставки кода в (вызываем соответственно сниппет в блоке head, в коде добавлены пробелы до и после { и } чтобы fenom не ругался):
<?php
$idgtm = $modx->getOption("GoogLeTagManagerID");
$hostname=$modx->getOption("http_host");
print '<!-- Google Tag Manager for '.$hostname.' -->
<script>
(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","'.$idgtm.'");</script> <!-- End Google Tag Manager -->';
А для кода который вставляется в начало тега body сделал такой чанк (с конструкциями fenom — fenom должен быть включен -если не хотите включать переделайте в сниппет как в примере кода сниппета выше)<!-- Google Tag Manager (noscript) for {$modx->getOption("http_host")} -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={$modx->getOption("GoogLeTagManagerID")}"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
В контекст добавил ключ GoogLeTagManagerID со значением ID GoogleTagManager (который выглядит как GTM-ABCDEFG)
Подскажите более элегантный способ кода.
Можно просто в чанке стандартными тегами прописать:
<!-- Google Tag Manager for [[++http_host]] -->
<script>
(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","[[++GoogLeTagManagerID]]");
</script>
<!-- End Google Tag Manager -->
Спасибо! Я вроде так же пробовал вначале, но видимо чтото не так написал, сайт не грузил страницу, я грешил на fenom. А ваш код заработал без проблем.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.