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
. Как здесь справится уже не могу понять, отделение пробелами не помогает. При этом вставка с другого рабочего сайта похожей конструкции, только аналитики, а не менеджера тегов также не работает. Может кто-то сталкивался с похожим? Заранее спасибо!
Евгений
06 марта 2017, 14:49
modx.pro
1
2 758
0

Комментарии: 5

Евгений Webinmd
06 марта 2017, 18:23
+1
{ignore}Ваш код {ignore}
Либо раставьте пробелы до и после фигурных скобок
Либо вынесите в отдельный файл подключение
    Евгений
    06 марта 2017, 19:54
    1
    0
    Спасибо! помогли пробелы до и после фигурных скобок
    Олег Захаров
    03 апреля 2018, 18:23
    0
    А как можно вставить код счетчика через настройки контекста? Чтобы для каждого контекста прописывать номер счетчика? А код был универсальный. Например я хочу сохранить номер ID GoogleTagManager в настройках контекста, а код сниппета и чанка вставки кода GoogleTagManager сделать универсальный один?
      Олег Захаров
      03 апреля 2018, 18:23
      1
      0
      Пока думал убил полдня! Но сделал, делюсь наработкой моет кому пригодится:

      Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы 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)
        Олег Захаров
        03 апреля 2018, 18:41
        0
        Исправил — хотел чтобы в комментарий было видно для какого контекста выводится код GoogleTagManager чтобы можно было проверить не ошибся ли с номером ID GoogleTagManager (предыдущий коммент можно удалить):
        Делюсь наработкой может кому пригодится:

        Сниппет вставки кода в (вызываем соответственно сниппет в , в коде добавлены пробелы до и после { и } чтобы 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)
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5