Question

I have a situation where a content management system uses the same template for multiple websites with different domain names and I can't make a separate template for each. However, each website needs to be tracked separately with google analytics. Would this be appropriate to track each domain like this by putting in some conditional code? And would this be robust enough not to break? Is there a more elegant way to do this?

<script type="text/javascript">
  var _gaq = _gaq || [];
  switch (location.hostname){
    case 'www.aaa.com':
        _gaq.push(['_setAccount', 'UA-xxxxxxx-1']);
        break;
    case 'www.bbb.com':
        _gaq.push(['_setAccount', 'UA-xxxxxxx-2']);
        break;
    case 'www.ccc.com':
        _gaq.push(['_setAccount', 'UA-xxxxxxx-3']);
        break;
  }

  _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);
  })();

</script>

Just to be clear, each website is a separate domain name and must be tracked separately, NOT different domains with same pages on one analytics profile.

Était-ce utile?

La solution

Passing in a map of ids allows you to remove the ugly switch

var ids = {
    'www.aaa.com': 'UA-xxxxxxx-1',
    'www.bbb.com': 'UA-xxxxxxx-2'
}
_gaq.push(['_setAccount', ids[location.hostname]])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top