From 017a974ef01ab90c33af9e1b9c11583a22401d1c Mon Sep 17 00:00:00 2001 From: foliet <1843619244@qq.com> Date: Mon, 22 Aug 2022 12:28:54 +0800 Subject: [PATCH] Add matomo as an analytics provider (#553) --- _config.yml | 7 +++++++ layout/_third-party/analytics/index.njk | 1 + layout/_third-party/analytics/matomo.njk | 4 ++++ source/js/third-party/analytics/matomo.js | 19 +++++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 layout/_third-party/analytics/matomo.njk create mode 100644 source/js/third-party/analytics/matomo.js diff --git a/_config.yml b/_config.yml index 4f2073b..a138cd2 100644 --- a/_config.yml +++ b/_config.yml @@ -693,6 +693,13 @@ cloudflare_analytics: # See: https://clarity.microsoft.com/ clarity_analytics: # +# Matomo Analytics +# See: https://matomo.org/ +matomo: + enable: false + server_url: # https://www.example.com/ + site_id: # + # Show number of visitors of each article. # You can visit https://www.leancloud.cn to get AppID and AppKey. leancloud_visitors: diff --git a/layout/_third-party/analytics/index.njk b/layout/_third-party/analytics/index.njk index ad09ace..796a0fd 100644 --- a/layout/_third-party/analytics/index.njk +++ b/layout/_third-party/analytics/index.njk @@ -3,3 +3,4 @@ {%- include 'growingio.njk' -%} {%- include 'cloudflare.njk' -%} {%- include 'microsoft-clarity.njk' -%} +{%- include 'matomo.njk' -%} diff --git a/layout/_third-party/analytics/matomo.njk b/layout/_third-party/analytics/matomo.njk new file mode 100644 index 0000000..ed64d11 --- /dev/null +++ b/layout/_third-party/analytics/matomo.njk @@ -0,0 +1,4 @@ +{%- if theme.matomo.enable %} + {{ next_data('matomo', theme.matomo) }} + {{ next_js('third-party/analytics/matomo.js') }} +{%- endif %} diff --git a/source/js/third-party/analytics/matomo.js b/source/js/third-party/analytics/matomo.js new file mode 100644 index 0000000..290a3e0 --- /dev/null +++ b/source/js/third-party/analytics/matomo.js @@ -0,0 +1,19 @@ +/* global CONFIG */ + +if (CONFIG.matomo.enable) { + window._paq = window._paq || []; + const _paq = window._paq; + + /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ + _paq.push(['trackPageView']); + _paq.push(['enableLinkTracking']); + const u = CONFIG.matomo.server_url; + _paq.push(['setTrackerUrl', u + 'matomo.php']); + _paq.push(['setSiteId', CONFIG.matomo.site_id]); + const d = document; + const g = d.createElement('script'); + const s = d.getElementsByTagName('script')[0]; + g.async = true; + g.src = u + 'matomo.js'; + s.parentNode.insertBefore(g, s); +}