_google_analytics.pug 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. if (typeof(ExposedSettings.gaTokenV4) != "undefined" || typeof(ExposedSettings.gaToken) != "undefined")
  2. script(type="text/javascript", nonce=scriptNonce, id="ga-loader" data-ga-token=ExposedSettings.gaToken data-ga-token-v4=ExposedSettings.gaTokenV4 data-cookie-domain=ExposedSettings.cookieDomain data-session-analytics-id=getSessionAnalyticsId()).
  3. var gaSettings = document.querySelector('#ga-loader').dataset;
  4. var gaid = gaSettings.gaTokenV4;
  5. var gaToken = gaSettings.gaToken;
  6. var cookieDomain = gaSettings.cookieDomain;
  7. var sessionAnalyticsId = gaSettings.sessionAnalyticsId;
  8. if(gaid) {
  9. var additionalGaConfig = sessionAnalyticsId ? { 'user_id': sessionAnalyticsId } : {};
  10. window.dataLayer = window.dataLayer || [];
  11. function gtag(){
  12. dataLayer.push(arguments);
  13. }
  14. gtag('js', new Date());
  15. gtag('config', gaid, { 'anonymize_ip': true, ...additionalGaConfig });
  16. }
  17. if (gaToken) {
  18. window.ga = window.ga || function () {
  19. (window.ga.q = window.ga.q || []).push(arguments);
  20. }, window.ga.l = 1 * new Date();
  21. }
  22. var loadGA = window.olLoadGA = function() {
  23. if (gaid) {
  24. var s = document.createElement('script');
  25. s.setAttribute('async', 'async');
  26. s.setAttribute('src', 'https://www.googletagmanager.com/gtag/js?id=' + gaid);
  27. document.querySelector('head').append(s);
  28. }
  29. if (gaToken) {
  30. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  31. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  32. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  33. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  34. ga('create', gaToken, cookieDomain.replace(/^\./, ""));
  35. ga('set', 'anonymizeIp', true);
  36. if (sessionAnalyticsId) {
  37. ga('set', 'userId', sessionAnalyticsId);
  38. }
  39. ga('send', 'pageview');
  40. }
  41. };
  42. // Check if consent given (features/cookie-banner)
  43. var oaCookie = document.cookie.split('; ').find(function(cookie) {
  44. return cookie.startsWith('oa=');
  45. });
  46. if(oaCookie) {
  47. var oaCookieValue = oaCookie.split('=')[1];
  48. if(oaCookieValue === '1') {
  49. loadGA();
  50. }
  51. }
  52. if typeof(ExposedSettings.gaTokenV4) === "undefined"
  53. script(type="text/javascript", nonce=scriptNonce).
  54. window.gtag = function() { console.log("would send to GA4", arguments) };
  55. if typeof(ExposedSettings.gaToken) === "undefined"
  56. script(type="text/javascript", nonce=scriptNonce).
  57. window.ga = function() { console.log("would send to GA", arguments) };