Sfoglia il codice sorgente

Add support for Matomo (formerly Piwik) (#508)

Co-authored-by: Luiz F. A. de Prá <luizdepra@users.noreply.github.com>
Alphonse Mariya 5 anni fa
parent
commit
1d4b612a44

+ 1 - 0
CONTRIBUTORS.md

@@ -91,3 +91,4 @@
 - [Felix](https://github.com/lazyyz)
 - [Peter Duchnovsky](https://pduchnovsky.com)
 - [Alex Miranda](https://ammiranda.com)
+- [Alphonse Mariya](https://github.com/alfunx)

+ 29 - 16
exampleSite/config.toml

@@ -80,24 +80,37 @@ disqusShortname = "yourdiscussshortname"
 [params.cloudflare]
     token = "token"
 
+# If you want to use Matomo(https://matomo.org) for analytics, add this section
+[params.matomo]
+    # Default value is "1", overwrite this if you are cloud-hosting
+    siteID = "ABCDE"
+    # For cloud-hosting, use provided URL, e.g. example.matomo.cloud
+    serverURL = "analytics.example.com"
+
 # If you want to implement a Content-Security-Policy, add this section
 [params.csp]
-	childsrc = ["'self'"]
-	fontsrc=["'self'",
-		"https://fonts.gstatic.com",
-		"https://cdn.jsdelivr.net/"]
-	formaction = ["'self'"]
-	framesrc = ["'self'"]
-	imgsrc = ["'self'"]
-	objectsrc = ["'none'"]
-	stylesrc = ["'self'",
-		"'unsafe-inline'",
-		"https://fonts.googleapis.com/",
-		"https://cdn.jsdelivr.net/"]
-	scriptsrc = ["'self'",
-		"'unsafe-inline'",
-		"https://www.google-analytics.com"]
-	prefetchsrc = ["'self'"]
+	  childsrc = ["'self'"]
+	  fontsrc = [
+        "'self'",
+		    "https://fonts.gstatic.com",
+		    "https://cdn.jsdelivr.net/"
+    ]
+	  formaction = ["'self'"]
+	  framesrc = ["'self'"]
+	  imgsrc = ["'self'"]
+	  objectsrc = ["'none'"]
+	  stylesrc = [
+        "'self'",
+		    "'unsafe-inline'",
+		    "https://fonts.googleapis.com/",
+		    "https://cdn.jsdelivr.net/"
+    ]
+	  scriptsrc = [
+        "'self'",
+		    "'unsafe-inline'",
+		    "https://www.google-analytics.com"
+    ]
+	  prefetchsrc = ["'self'"]
 
 [taxonomies]
   category = "categories"

+ 4 - 0
layouts/_default/baseof.html

@@ -145,6 +145,10 @@
     {{ if and .Site.Params.cloudflare .Site.Params.cloudflare.token }}
       {{- partial "analytics/cloudflare" . -}}
     {{ end }}
+
+    {{ if and .Site.Params.matomo .Site.Params.matomo.serverURL }}
+      {{- partial "analytics/matomo" . -}}
+    {{ end }}
   </body>
 
 </html>

+ 13 - 0
layouts/partials/analytics/matomo.html

@@ -0,0 +1,13 @@
+<script type="application/javascript">
+  var _paq = window._paq = window._paq || [];
+  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u="https://{{ $.Site.Params.matomo.serverURL }}/";
+    _paq.push(['setTrackerUrl', u+'matomo.php']);
+    _paq.push(['setSiteId', '{{ $.Site.Params.matomo.siteID | default "1" }}']);
+    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+  })();
+</script>

+ 10 - 0
stackbit.yaml

@@ -139,6 +139,16 @@ models:
               - type: string
                 name: token
                 label: token for Cloudflare Web Analytics
+          - type: object
+            name: matomo
+            label: Matomo (optional)
+            fields:
+              - type: string
+                name: siteID
+                label: Site ID for Matomo
+              - type: string
+                name: serverURL
+                label: URL for Matomo
       - type: object
         name: languages
         fields: