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); +}