浏览代码

Fix google analytics feature (#989)

* fix: Fix google analytics

* fix: Change respectDoNotTrack in GA html template

---------

Co-authored-by: Emruz Hossain <hossainemruz@gmail.com>
JY Hsu 5 月之前
父节点
当前提交
ca0c07df7f
共有 2 个文件被更改,包括 23 次插入3 次删除
  1. 1 3
      layouts/partials/analytics.html
  2. 22 0
      layouts/partials/google_analytics.html

+ 1 - 3
layouts/partials/analytics.html

@@ -4,9 +4,7 @@
         {{ with .services }}
             <!-- Google Analytics -->
             {{ with .google }}
-                {{ $privacyConfig:= dict (slice "Site" "Config" "Privacy" "GoogleAnalytics") $.Site.Config.Privacy.GoogleAnalytics }}
-                {{ $analyticsConfig := dict (slice "Site" "Config" "Services" "GoogleAnalytics" "ID") .id }}
-                {{ template "_internal/google_analytics.html" (merge $privacyConfig $analyticsConfig) }}
+                {{ partial "google_analytics.html" . }}
             {{ end }}
 
             <!-- Counter.dev -->

+ 22 - 0
layouts/partials/google_analytics.html

@@ -0,0 +1,22 @@
+{{ if site.Params.features.analytics.enabled }}
+  {{- with site.Params.features.analytics.services.google.id }}
+    {{- if strings.HasPrefix (lower .) "ua-" }}
+      {{- warnf "Google Analytics 4 (GA4) replaced Google Universal Analytics (UA) effective 1 July 2023. See https://support.google.com/analytics/answer/11583528. Create a GA4 property and data stream, then replace the Google Analytics ID in your site configuration with the new value." }}
+    {{- else }}
+      <script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
+      <script>
+        var doNotTrack = false;
+        if ({{ site.Params.features.analytics.services.google.respectDoNotTrack }}) {
+          var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack);
+          var doNotTrack = (dnt == "1" || dnt == "yes");
+        }
+        if (!doNotTrack) {
+          window.dataLayer = window.dataLayer || [];
+          function gtag(){dataLayer.push(arguments);}
+          gtag('js', new Date());
+          gtag('config', '{{ . }}');
+        }
+      </script>
+    {{- end }}
+  {{- end }}
+{{- end -}}