3

У меня есть веб-сайт, запущенный ASPDOTNETSTOREFRONT.Ошибка анализа в скрипте Диспетчера тегов Google в пакете XML

Я пытаюсь добавить пользовательскую строку сценария отслеживания к набору веб-страниц.

Для этого я добавляю скрипт менеджера тегов Google в пакет XML, который используются этими страницами, поэтому он отображается на всех страницах, которые я хочу отслеживать.

Я просто скопировал и вставил скрипт менеджера тегов Google в свой XML-пакет.

`<!-- Google Tag Manager --> 
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-5HD6WH" 
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
<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= 
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 
})(window,document,'script','dataLayer','GTM-5HD6WH');</script> 
<!-- End Google Tag Manager -->` 

Но когда я пытаюсь загрузить страницу с помощью этого пакета, она дает следующую ошибку.

Exception=Error in XmlPackage(.Load), Package=[product.engineproduct.xml.config], Msg=[Exception=An error occurred while parsing EntityName. Line 246, position 42. 
] 

Таким образом, люди могут видеть номера строк и положение, я могу показать скриншот из пакета XML (исходный код).

http://i.stack.imgur.com/mJ2Tb.jpg

Кто-нибудь есть какие-либо предложения, как это исправить?

ответ

2

Попробуйте поместить содержимое сценария в CDATA:

<!-- Google Tag Manager --> 
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-5HD6WH" 
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
<script> 
<![CDATA[ 
(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= 
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 
})(window,document,'script','dataLayer','GTM-5HD6WH'); 
]]> 
</script> 
<!-- End Google Tag Manager --> 
+0

Awesome! Это именно то, что я был после ... –

+0

как этот ответ не имеет сотни голосов? Огромное спасибо! – cosbor11

0

И 1 год спустя ... У меня была та же проблема в DNN 7.4.2.

У меня было что-то подобное в httpdocs/SiteAnalytics.config

<?xml version="1.0" encoding="utf-8" ?> 
<AnalyticsEngineConfig> 
    <Engines> 
     <AnalyticsEngine> 
      <EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType> 
      <ElementId>Head</ElementId> 
      <InjectTop>False</InjectTop> 
      <ScriptTemplate> 

       <!-- Google Tag Manager --> 

       <script type="text/javascript"> 

      (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','<Tracking ID>'); 

     </script> 

     <!-- End Google Tag Manager --> 

       <!-- documented... we would like to disable it by now 
     <![CDATA[  

       <script type="text/javascript"> 
        var _gaq = _gaq || []; 
        _gaq.push(['_setAccount', '[TRACKING_ID]']); 
        _gaq.push(['_trackPageview']); 
        [PAGE_URL] 

        (function() { 
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
        ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; 
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
        })(); 
       </script> 

      ]]> 
      --> 
      </ScriptTemplate> 
     </AnalyticsEngine> 
    </Engines> 
</AnalyticsEngineConfig> 

См путем знаю, что я уезжаю это как ручное изменение (но, как я вижу теперь я думаю, что это будет очень легко интегрируйте новый менеджер тегов google с функциональностью DNN и меню).

The @dubloons предложенное изменение не работает для меня, так что я сделал это так:

<?xml version="1.0" encoding="utf-8" ?> 
<AnalyticsEngineConfig> 
    <Engines> 
     <AnalyticsEngine> 
      <EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType> 
      <ElementId>Head</ElementId> 
      <InjectTop>False</InjectTop> 
      <ScriptTemplate> 

       <!-- Google Tag Manager --> 
     <![CDATA[ 
       <script type="text/javascript"> 

      (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','<Tracking ID>'); 

     </script> 
     ]]> 
     <!-- End Google Tag Manager --> 

       <!-- documented... we would like to disable it by now 
     <![CDATA[  

       <script type="text/javascript"> 
        var _gaq = _gaq || []; 
        _gaq.push(['_setAccount', '[TRACKING_ID]']); 
        _gaq.push(['_trackPageview']); 
        [PAGE_URL] 

        (function() { 
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
        ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; 
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
        })(); 
       </script> 

      ]]> 
      --> 
      </ScriptTemplate> 
     </AnalyticsEngine> 
    </Engines> 
</AnalyticsEngineConfig> 

Как вы видите, я sourrounded аль скрипт тегов в CDATA, а не только JS код. будет чем-то вроде GTM-XXXXXX. Как вы можете видеть, идентификатор отслеживания жестко запрограммирован знанием, но это еще одна проблема: D.

Смежные вопросы