Вставка кода GoogleAnalytics в XSLT-шаблоны — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «== Задача == Категория:Верстка в XSLT»)
 
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Задача ==
+
Если стоит задача добавить код GoogleAnalytics в XSTL-шаблон, то можно использовать 2 способа:
 +
* использовать макрос [http://help-dev.umi-cms.ru/system.googleAnalyticsCode.html %system googleAnalyticsCode()%]
 +
* вставить код непосредственно в шаблон, используя запись [http://ru.wikipedia.org/wiki/CDATA <nowiki><![CDATA[ ... ]]></nowiki>]. Этим же способом можно вставить код любого другого счетчика в шаблоны сайта.
  
[[Категория:Верстка в XSLT]]
+
== Использование макроса ==
 +
 
 +
Для того, чтобы вставить код при помощи макроса, следует воспользоваться инструкцией <xsl:value-of> и функцией document():
 +
 
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 +
<xsl:output method="html" encoding="utf-8"/>
 +
 
 +
<xsl:template match="/">
 +
  <html>
 +
 
 +
    <head>
 +
<xsl:value-of select="document('udata://system/googleAnalyticsCode/')/udata" disable-output-escaping="yes"/>
 +
    </head>
 +
 
 +
    <body>
 +
 
 +
        ...
 +
 
 +
    </body>
 +
  </html>
 +
</xsl:template>
 +
 
 +
</xsl:stylesheet>
 +
</source>
 +
 
 +
Преимуществом этого способа является то, что сам идентификатор GoogleAnalytics можно будет всегда поменять из административной панели, не редактируя код шаблонов в дальнейшем. Эта настройка находится в модуле "Конфигурация" во вкладке "Домены" в свойствах каждого домена.
 +
 
 +
== Код в шаблонах ==
 +
Возьмём к примеру демо-сайт с интернет-магазином бытовой техники.
 +
 
 +
В файле ~/xsltTpls/layouts/default.xsl, после строчки
 +
<source lang="xml">
 +
<xsl:template match="/" mode="layout">
 +
</source>
 +
содержится сам код страницы.
 +
Непосредственно внутри тегов <head></head> мы можем добавить код анализатора GoogleAnalytics:
 +
 
 +
 
 +
'''1. устаревший вариант GA:'''
 +
 
 +
<source lang="xml">
 +
<script type="text/javascript">
 +
<![CDATA[
 +
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
 +
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js'
 +
        type='text/javascript'%3E%3C/script%3E"));
 +
]]>
 +
</script>
 +
<script type="text/javascript">
 +
<![CDATA[
 +
try {
 +
var pageTracker = _gat._getTracker("ID-00000000-0");
 +
pageTracker._trackPageview();
 +
} catch(err) {}
 +
]]>
 +
</script>
 +
</source>
 +
 
 +
В строчке '''var pageTracker = _gat._getTracker("ID-00000000-0");''' вместо ID-00000000-0 укажите ваш код GoogleAnalytics.
 +
 
 +
 
 +
'''2. асинхронный код GA:'''
 +
 
 +
<source lang="xml">
 +
<script type="text/javascript">
 +
<![CDATA[
 +
var _gaq = _gaq || [];
 +
    _gaq.push(['_setAccount', 'ID-00000000-0']);
 +
      _gaq.push(['_trackPageview']);
 +
    (function() {
 +
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
 +
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
 +
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 +
      })();
 +
]]>
 +
</script>
 +
</source>
 +
 
 +
В строчке '''_gaq.push(['_setAccount', 'ID-00000000-0']);''' вместо ID-00000000-0 укажите ваш код GoogleAnalytics.
 +
 
 +
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Верстка в XSLT]]

Текущая версия на 12:03, 7 сентября 2010

Если стоит задача добавить код GoogleAnalytics в XSTL-шаблон, то можно использовать 2 способа:

  • использовать макрос %system googleAnalyticsCode()%
  • вставить код непосредственно в шаблон, используя запись <![CDATA[ ... ]]>. Этим же способом можно вставить код любого другого счетчика в шаблоны сайта.

Использование макроса

Для того, чтобы вставить код при помощи макроса, следует воспользоваться инструкцией <xsl:value-of> и функцией document():

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:output method="html" encoding="utf-8"/>

 <xsl:template match="/">
   <html>

     <head>
	<xsl:value-of select="document('udata://system/googleAnalyticsCode/')/udata" disable-output-escaping="yes"/>
     </head>

     <body> 

        ...

     </body>
   </html>
 </xsl:template>

</xsl:stylesheet>

Преимуществом этого способа является то, что сам идентификатор GoogleAnalytics можно будет всегда поменять из административной панели, не редактируя код шаблонов в дальнейшем. Эта настройка находится в модуле "Конфигурация" во вкладке "Домены" в свойствах каждого домена.

Код в шаблонах

Возьмём к примеру демо-сайт с интернет-магазином бытовой техники.

В файле ~/xsltTpls/layouts/default.xsl, после строчки

<xsl:template match="/" mode="layout">

содержится сам код страницы. Непосредственно внутри тегов <head></head> мы можем добавить код анализатора GoogleAnalytics:


1. устаревший вариант GA:

 <script type="text/javascript">
	<![CDATA[
	 var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
	 document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' 
         type='text/javascript'%3E%3C/script%3E"));
	]]>
 </script>
 <script type="text/javascript">
	<![CDATA[
	 try {
	 var pageTracker = _gat._getTracker("ID-00000000-0");
	 pageTracker._trackPageview();
	 } catch(err) {}
	]]>
 </script>

В строчке var pageTracker = _gat._getTracker("ID-00000000-0"); вместо ID-00000000-0 укажите ваш код GoogleAnalytics.


2. асинхронный код GA:

 <script type="text/javascript">
	<![CDATA[
	 var _gaq = _gaq || [];
    	 _gaq.push(['_setAccount', 'ID-00000000-0']);
       	 _gaq.push(['_trackPageview']);
    	 (function() {
	 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	 var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
       	 })();
	]]>
 </script>

В строчке _gaq.push(['_setAccount', 'ID-00000000-0']); вместо ID-00000000-0 укажите ваш код GoogleAnalytics.