Comments (2)
@mrimann Thanks for your suggestion. Unfortunately, I do not have a test instance of Matomo/Piwik and therefore can't properly implement this feature. If you got it working, feel free to send an PR and I'll merge it.
from anatole.
@lxndrblz hmm - if it helps, I could organize an installation of Matomo to test-drive the new feature. May be you could also use https://matomo.org/start-free-analytics-trial/ got get a test installation without hassle.
Code-wise I first thought of "the same way as with Google Analytics" -> e.g. just enter the UA-xxxxx-xx
account identifier in the config and let the template render the full block of JavaScript with that account identifier injected. But thinging this through I noticed it could be a little bit trickier to implement:
- it's not just about a globally unique account identifier
- the URL needs to be set (because everyone can host Matomo on his/her own server, e.g.
https://tracking.mycompany.tld
- there's a
unique number per installation
that identifies the tracked website (Matomo can track multiple websites/applications in one single Matomo installation, referring to the single websites/configs by a so called site ID)
As an example, the full tracking-code to be inserted in the HTML-output will look like this (anonymized):
<!-- Matomo -->
--
| <script>
| 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://analytics.DOMAIN.TLD/";
| _paq.push(['setTrackerUrl', u+'matomo.php']);
| _paq.push(['setSiteId', 'SITE_ID']);
| 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>
| <!-- End Matomo Code -->
So the question is how to tackle this. I see two variants:
- Variant A: Do it "same as with Google Analytics", but with two options for the URL and the SITE_ID (and render the rest of the above code block from the template)
- Variant B: Add a more generic approach to include/render any block of JavaScript in the template's output (this could be used for Matomo's tracking-code or any other snippet that needs to be delivered to the browser) - and just document how to add e.g. Matomo's tracking-code via this way of configuration
I personally prefer variant A as it's the smaller change - but if there's a need for a more generic solution and others are asking for something like variant B, that should absolutely do it, too.
For variant A I might prepare a PR, for variant B I don't know how to implement that properly.
from anatole.
Related Issues (20)
- Any plans to support older browsers? HOT 1
- Cannot display summary on index page
- Setting missing from wiki page HOT 1
- Adding things like "1 minute read" and date inside the blog post HOT 4
- Questions about Table of Contents HOT 1
- Render issues after upgrading to Hugo v0.111.3 HOT 1
- Adding giscus for new comment system support
- Misaligned first code line in code blocks HOT 4
- Font size conflicts within gist code blocks HOT 2
- Website Search Feature Missing HOT 1
- Umami is broken HOT 1
- Hugo v0113.0: warning about use of twitter_simple shortcode
- Wiki: Add missing parameter to Umami Analytics HOT 1
- Footnote links to consider navbar height
- The "Related Posts" text is currently not considered for translation.
- Can't add CC licence HTML code in the copyright parameter in Hugo.toml HOT 1
- Character Encoding set after title.
- Mermaid diagram doesn't appear HOT 1
- Difficulties adding GDPR-compliant cookie consent dialogue. HOT 1
- Giscus with old version of anatole HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from anatole.