From e918f1165220c70dcd25c10fc251d3df1f269b65 Mon Sep 17 00:00:00 2001
From: John Barker <john@johnrbarker.com>
Date: Wed, 13 Aug 2025 03:56:04 +0000
Subject: [PATCH] feat: add support for matomo analytics (#2051)
---
quartz/plugins/emitters/componentResources.ts | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/quartz/plugins/emitters/componentResources.ts b/quartz/plugins/emitters/componentResources.ts
index 61e2ba8..857f4d3 100644
--- a/quartz/plugins/emitters/componentResources.ts
+++ b/quartz/plugins/emitters/componentResources.ts
@@ -201,6 +201,33 @@
})(window, document, "clarity", "script", "${cfg.analytics.projectId}");\`
document.head.appendChild(clarityScript)
`)
+ } else if (cfg.analytics?.provider === "matomo") {
+ componentResources.afterDOMLoaded.push(`
+ const matomoScript = document.createElement("script");
+ matomoScript.innerHTML = \`
+ let _paq = window._paq = window._paq || [];
+
+ // Track SPA navigation
+ // https://developer.matomo.org/guides/spa-tracking
+ document.addEventListener("nav", () => {
+ _paq.push(['setCustomUrl', location.pathname]);
+ _paq.push(['setDocumentTitle', document.title]);
+ _paq.push(['trackPageView']);
+ });
+
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ const u="//${cfg.analytics.host}/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', ${cfg.analytics.siteId}]);
+ const d=document, g=d.createElement('script'), s=d.getElementsByTagName
+('script')[0];
+ g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ \`
+ document.head.appendChild(matomoScript);
+ `)
}
if (cfg.enableSPA) {
--
Gitblit v1.10.0