From 9a5ce46792b46d63ff992ea98d51933df554c789 Mon Sep 17 00:00:00 2001 From: Patrice Chalin Date: Wed, 17 Aug 2022 15:57:38 -0400 Subject: [PATCH] Use gtag.js analytics library for all site tags --- layouts/_internal/google_analytics_gtag.html | 42 +++++++++++++++++++ layouts/partials/head.html | 5 ++- .../en/docs/adding-content/feedback.md | 6 +++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 layouts/_internal/google_analytics_gtag.html diff --git a/layouts/_internal/google_analytics_gtag.html b/layouts/_internal/google_analytics_gtag.html new file mode 100644 index 0000000000..32b6a33654 --- /dev/null +++ b/layouts/_internal/google_analytics_gtag.html @@ -0,0 +1,42 @@ +{{/* + + This is a modified copy of + + https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/google_analytics.html, + + specifically this version: + + https://github.com/gohugoio/hugo/blob/f7e00c039ff3cea5f991b05c1e325666004cf129/tpl/tplimpl/embedded/templates/google_analytics.html + + The only differences between this copy and the original are that we've dropped: + + - The `{{ if hasPrefix . "G-"}}` condition + - The `{{ else }}` block + - The `anonymize_ip` argument to the `gtag()` call, since it is superfluous. + For details, see https://github.com/gohugoio/hugo/issues/10093. + +*/}} + +{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}} +{{- if not $pc.Disable }}{{ with .Site.GoogleAnalytics -}} + + +{{- end }}{{ end -}} + +{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}} +{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}} +{{- if not $pc.RespectDoNotTrack -}} +var doNotTrack = false; +{{- else -}} +var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack); +var doNotTrack = (dnt == "1" || dnt == "yes"); +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/layouts/partials/head.html b/layouts/partials/head.html index fec2745c26..e6ae6924c9 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -45,8 +45,9 @@ {{/* To comply with GDPR, cookie consent scripts places in head-end must execute before Google Analytics is enabled */ -}} {{ if hugo.IsProduction -}} - {{ if hasPrefix .Site.GoogleAnalytics "G-" -}} - {{ template "_internal/google_analytics.html" . -}} + {{ $enableGtagForUniversalAnalytics := not .Site.Params.disableGtagForUniversalAnalytics -}} + {{ if (or $enableGtagForUniversalAnalytics (hasPrefix .Site.GoogleAnalytics "G-")) -}} + {{ template "_internal/google_analytics_gtag.html" . -}} {{ else -}} {{ template "_internal/google_analytics_async.html" . -}} {{ end -}} diff --git a/userguide/content/en/docs/adding-content/feedback.md b/userguide/content/en/docs/adding-content/feedback.md index 55f043926c..553488a2f3 100644 --- a/userguide/content/en/docs/adding-content/feedback.md +++ b/userguide/content/en/docs/adding-content/feedback.md @@ -33,6 +33,11 @@ started** section of [Introducing Google Analytics 4 (GA4)][ga4-intro]. Enable Google Analytics by adding your project's analytics ID to the site configuration file. For details, see [Configure Google Analytics][]. +By default, Docsy uses the [gtag.js][] analytics library for both GA4 (which +_requires_ `gtag.js`) and Universal Analytics (UA) site tags. If you prefer using +the older `analytics.js` library for your UA site tag, then set +`params.disableGtagForUniversalAnalytics` to false in your project's config. + {{% alert title="Warning" color="warning" %}} @@ -289,6 +294,7 @@ partial. For details, see [Customizing templates]({{< ref "lookandfeel#customizi [Configure Google Analytics]: https://gohugo.io/templates/internal/#configure-google-analytics [ga4-intro]: https://support.google.com/analytics/answer/1042508 [Google Analytics]: https://analytics.google.com/analytics/web/ +[gtag.js]: https://support.google.com/analytics/answer/10220869 [hugo-ga]: https://gohugo.io/templates/internal/#google-analytics [internal templates]: https://gohugo.io/templates/internal/ [layouts/partials/page-description.html]: https://github.com/google/docsy/blob/main/layouts/partials/page-description.html