mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Add support for Google Analytics v4
This commit is contained in:
parent
782c79ae61
commit
ba16a14c6e
6 changed files with 45 additions and 10 deletions
|
@ -92,6 +92,9 @@ respectDoNotTrack
|
||||||
useSessionStorage
|
useSessionStorage
|
||||||
: Enabling this will disable the use of Cookies and use Session Storage to Store the GA Client ID.
|
: Enabling this will disable the use of Cookies and use Session Storage to Store the GA Client ID.
|
||||||
|
|
||||||
|
{{% warning %}}
|
||||||
|
`useSessionStorage` is not supported when using Google Analytics v4 (gtag.js).
|
||||||
|
{{% /warning %}}
|
||||||
### Instagram
|
### Instagram
|
||||||
|
|
||||||
simple
|
simple
|
||||||
|
|
|
@ -27,14 +27,20 @@ While the following internal templates are called similar to partials, they do *
|
||||||
|
|
||||||
## Google Analytics
|
## Google Analytics
|
||||||
|
|
||||||
Hugo ships with internal templates for Google Analytics tracking, including both synchronous and asynchronous tracking codes.
|
Hugo ships with internal templates for Google Analytics tracking, including both synchronous and asynchronous tracking codes. As well as support for both v3 and v4 of Google Analytics.
|
||||||
|
|
||||||
### Configure Google Analytics
|
### Configure Google Analytics
|
||||||
|
|
||||||
Provide your tracking id in your configuration file:
|
Provide your tracking id in your configuration file:
|
||||||
|
|
||||||
|
**Google Analytics v3 (analytics.js)**
|
||||||
{{< code-toggle file="config" >}}
|
{{< code-toggle file="config" >}}
|
||||||
googleAnalytics = "UA-123-45"
|
googleAnalytics = "UA-PROPERTY_ID"
|
||||||
|
{{</ code-toggle >}}
|
||||||
|
|
||||||
|
**Google Analytics v4 (gtag.js)**
|
||||||
|
{{< code-toggle file="config" >}}
|
||||||
|
googleAnalytics = "G-MEASUREMENT_ID"
|
||||||
{{</ code-toggle >}}
|
{{</ code-toggle >}}
|
||||||
|
|
||||||
### Use the Google Analytics Template
|
### Use the Google Analytics Template
|
||||||
|
@ -50,6 +56,8 @@ You can then include the Google Analytics internal template:
|
||||||
{{ template "_internal/google_analytics_async.html" . }}
|
{{ template "_internal/google_analytics_async.html" . }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
When using Google Analytics v4 use `_internal/google_analytics.html`.
|
||||||
|
|
||||||
A `.Site.GoogleAnalytics` variable is also exposed from the config.
|
A `.Site.GoogleAnalytics` variable is also exposed from the config.
|
||||||
|
|
||||||
## Disqus
|
## Disqus
|
||||||
|
|
|
@ -110,7 +110,7 @@ Disqus:
|
||||||
// Gheck GA regular and async
|
// Gheck GA regular and async
|
||||||
b.AssertFileContent("public/index.html",
|
b.AssertFileContent("public/index.html",
|
||||||
"'anonymizeIp', true",
|
"'anonymizeIp', true",
|
||||||
"'script','https://www.google-analytics.com/analytics.js','ga');\n\tga('create', 'ga_id', 'auto')",
|
"'script','https://www.google-analytics.com/analytics.js','ga');\n\tga('create', 'UA-ga_id', 'auto')",
|
||||||
"<script async src='https://www.google-analytics.com/analytics.js'>")
|
"<script async src='https://www.google-analytics.com/analytics.js'>")
|
||||||
|
|
||||||
// Disqus
|
// Disqus
|
||||||
|
|
|
@ -249,7 +249,7 @@ const commonConfigSections = `
|
||||||
[services.disqus]
|
[services.disqus]
|
||||||
shortname = "disqus_shortname"
|
shortname = "disqus_shortname"
|
||||||
[services.googleAnalytics]
|
[services.googleAnalytics]
|
||||||
id = "ga_id"
|
id = "UA-ga_id"
|
||||||
|
|
||||||
[privacy]
|
[privacy]
|
||||||
[privacy.disqus]
|
[privacy.disqus]
|
||||||
|
|
18
tpl/tplimpl/embedded/templates.autogen.go
generated
18
tpl/tplimpl/embedded/templates.autogen.go
generated
|
@ -121,8 +121,19 @@ var EmbeddedTemplates = [][2]string{
|
||||||
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>{{end}}
|
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>{{end}}
|
||||||
{{- end -}}`},
|
{{- end -}}`},
|
||||||
{`google_analytics.html`, `{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
{`google_analytics.html`, `{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable }}{{ with .Site.GoogleAnalytics -}}
|
||||||
{{ with .Site.GoogleAnalytics }}
|
{{ if hasPrefix . "G-"}}
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
|
||||||
|
<script>
|
||||||
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
|
if (!doNotTrack) {
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', '{{ . }}', { 'anonymize_ip': {{- $pc.AnonymizeIP -}} });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{{ else if hasPrefix . "UA-" }}
|
||||||
<script type="application/javascript">
|
<script type="application/javascript">
|
||||||
{{ template "__ga_js_set_doNotTrack" $ }}
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
if (!doNotTrack) {
|
if (!doNotTrack) {
|
||||||
|
@ -148,8 +159,9 @@ if (!doNotTrack) {
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end }}{{ end -}}
|
||||||
|
|
||||||
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
||||||
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
{{- if not $pc.RespectDoNotTrack -}}
|
{{- if not $pc.RespectDoNotTrack -}}
|
||||||
|
|
|
@ -1,6 +1,17 @@
|
||||||
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
{{- if not $pc.Disable -}}
|
{{- if not $pc.Disable }}{{ with .Site.GoogleAnalytics -}}
|
||||||
{{ with .Site.GoogleAnalytics }}
|
{{ if hasPrefix . "G-"}}
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
|
||||||
|
<script>
|
||||||
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
|
if (!doNotTrack) {
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', '{{ . }}', { 'anonymize_ip': {{- $pc.AnonymizeIP -}} });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
{{ else if hasPrefix . "UA-" }}
|
||||||
<script type="application/javascript">
|
<script type="application/javascript">
|
||||||
{{ template "__ga_js_set_doNotTrack" $ }}
|
{{ template "__ga_js_set_doNotTrack" $ }}
|
||||||
if (!doNotTrack) {
|
if (!doNotTrack) {
|
||||||
|
@ -26,8 +37,9 @@ if (!doNotTrack) {
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
{{ end }}
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end }}{{ end -}}
|
||||||
|
|
||||||
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
{{- define "__ga_js_set_doNotTrack" -}}{{/* This is also used in the async version. */}}
|
||||||
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
{{- $pc := .Site.Config.Privacy.GoogleAnalytics -}}
|
||||||
{{- if not $pc.RespectDoNotTrack -}}
|
{{- if not $pc.RespectDoNotTrack -}}
|
||||||
|
|
Loading…
Reference in a new issue