Отслеживание динамически изменяющейся пользовательской переменной в Matomo (piwik)

Я использую 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.


person Frederik T    schedule 27.02.2020    source источник


Ответы (1)


В любом случае, вот что я придумал, это не совсем то, что я хотел, но на данный момент он выполняет свою работу. Идея здесь в том, что я использую Cookie.js для получения файла cookie и прикрепления значения файла cookie к пользовательской переменной:

<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.

person Frederik T    schedule 02.03.2020