Pergunta

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.

Foi útil?

Solução

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]])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top