Author:
icek
Version:
2.0
Release Date:
17 Feb 2010
Category:
Third-Party Integration

Description

Very simple but useful utility to attach google analytics code to your pages or master template. Now you can choose between 2 syntaxes.

Example usage:

...
<xsl:import href="../utilities/get-google-analytics.xsl"/>
...
<xsl:call-template name="get-google-analytics">
    <xsl:with-param name="tracker" select="'tracker_id_provided_by_google'"/>
</xsl:call-template>
...

To use new alternative syntax:

...
<xsl:call-template name="get-google-analytics-alt">
    <xsl:with-param name="tracker" select="'tracker_id_provided_by_google'"/>
</xsl:call-template>
...

XSLT

View Raw
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:template name="get-google-analytics">
		<xsl:param name="tracker"/>
		<script type="text/javascript">
			<xsl:text>
				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"));
			</xsl:text>
		</script>
		<script type="text/javascript">
			<xsl:text>
				try {
					var pageTracker = _gat._getTracker("</xsl:text><xsl:value-of select="$tracker"/><xsl:text>");
					pageTracker._trackPageview();
				} catch(err) {}
			</xsl:text>
		</script>
	</xsl:template>
	<xsl:template name="get-google-analytics-alt">
		<xsl:param name="tracker"/>
		<script type="text/javascript">
			<xsl:text disable-output-escaping="yes">
				var _gaq = _gaq || [];
				_gaq.push(['_setAccount', '</xsl:text><xsl:value-of select="$tracker"/><xsl:text disable-output-escaping="yes">']);
				_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';
				(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
				})();
			</xsl:text>
		</script>
	</xsl:template>
</xsl:stylesheet>

Discuss this XSLT Utility

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details