Fenom и Google tag manager
Здравствуйте! Сайт тесно завязан на феном, через него подключается все чанки и шаблоны, после подключения GoogleTag manager в head (вот код
<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','GTM-T2SZ9GZ');</script>
) в некоторых местах парсер выдает ошибки, естественно экранирую тегами {ignore}, но толку в этом нет, в журнале ошибок ругается сначала на {w, после отделения фигурной скобки пробелами ругается на ':' в месте 'gtm.start': new
. Как здесь справится уже не могу понять, отделение пробелами не помогает. При этом вставка с другого рабочего сайта похожей конструкции, только аналитики, а не менеджера тегов также не работает. Может кто-то сталкивался с похожим? Заранее спасибо! Комментарии: 5
{ignore}Ваш код {ignore}
Либо раставьте пробелы до и после фигурных скобок
Либо вынесите в отдельный файл подключение
Либо раставьте пробелы до и после фигурных скобок
Либо вынесите в отдельный файл подключение
Спасибо! помогли пробелы до и после фигурных скобок
А как можно вставить код счетчика через настройки контекста? Чтобы для каждого контекста прописывать номер счетчика? А код был универсальный. Например я хочу сохранить номер ID GoogleTagManager в настройках контекста, а код сниппета и чанка вставки кода GoogleTagManager сделать универсальный один?
Пока думал убил полдня! Но сделал, делюсь наработкой моет кому пригодится:
Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы fenom не ругался):
Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы fenom не ругался):
<?php
$idgtm = $modx->getOption("GoogLeTagManagerID");
print '<!-- Google Tag Manager for '.$idgtm.'-->
<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->getContext($context_key)}-->
<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)
Исправил — хотел чтобы в комментарий было видно для какого контекста выводится код GoogleTagManager чтобы можно было проверить не ошибся ли с номером ID GoogleTagManager (предыдущий коммент можно удалить):
Делюсь наработкой может кому пригодится:
Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы fenom не ругался):
Делюсь наработкой может кому пригодится:
Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы 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)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.