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.

有帮助吗?

解决方案

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]])
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top