1

我正在使用 Matomo 在在线仪表板上跟踪用户;这是一个标准票价,没有什么特别之处,我只使用了两个自定义变量。这两个自定义变量值可以说是静态的,因为它们是在使用用户用户名和他们的角色生成页面时填充的。静态的东西,只要他们登录就不会改变。

现在我还想跟踪他们正在执行的一些不涉及页面加载的操作。更准确地说,主导航可以在瘦/折叠版本和完全展开版本之间动态切换。我想跟踪用户是否扩展了菜单。问题是用户可以随时更改它。

我有两种方法可以检查用户是否扩展了导航:检查元素上的类或 cookie。当用户在扩展导航之间切换时,设置会保存到 cookie 中,因此选择在页面加载时仍然存在。

如何跟踪可以动态更改的内容?我不是经验丰富的matomo用户,所以我真的不知道明显的答案。我也注意到了一些叫做自定义尺寸的东西,也许这有帮助?

如果它有帮助,这里是代码,虽然它是一个非常标准的票价:

        <script type="text/javascript">
        var _paq = window._paq || [];
        _paq.push(["setCustomVariable", 1, "UserName", "value set on page generation", "visit"]);
        _paq.push(["setCustomVariable", 2, "RoleTemplate", "value set on page generation", "visit"]);
        _paq.push(['trackPageView']);
        _paq.push(['enableLinkTracking']);
        (function () {
            var u = "https://myanalyticsurl.com/";
            _paq.push(['setTrackerUrl', u+'matomo.php']);
            _paq.push(['setSiteId', '1']);
            var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
            g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
        })();
    </script>

网站是基于 asp.net mvc 5 的。

4

1 回答 1

0

Well anyway, here is what I came up with, it's not quite what I wanted, but it gets the job done for now. The idea here is that I use Cookie.js to get a cookie and attach the cookie's value to the custom variable:

<script type="text/javascript">
var _paq = window._paq || [];
_paq.push(["setCustomVariable", 1, "UserName", "value set on page generation", "visit"]);
_paq.push(["setCustomVariable", 2, "RoleTemplate", "value set on page generation", "visit"]);
_paq.push(["setCustomVariable", 3, "ExpandedNavigationSetting", Cookies.get("sidenav-state") ? Cookies.get("sidenav-state") : "NA", "visit"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
    var u = "https://myanalyticsurl.com/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();

I will just post this as an ansver to my own question should anyone stumble across this question with the same issue.

于 2020-03-02T14:35:24.333 回答