質問

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