Интегрируйте Piwik Analytics в SharePoint 2016

Каков простой способ интеграции аналитики Piwik 3.0.2 в локальную ферму SharePoint 2016? Сам Piwik предлагает встроить следующий фрагмент в раздел заголовка веб-страницы. Как добиться этого для всех наших примерно 5000 коллекций сайтов чистым и поддерживаемым способом? Спасибо за вашу помощь :)

<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//my-piwik-url/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '3']);
    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+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->


person maQus123    schedule 13.04.2017    source источник


Ответы (3)


Если в вашей ферме есть надстройка, вы также можете ознакомиться с Надстройка интеграции веб-аналитики

person Nils    schedule 19.08.2017

Если бы это был я, я бы сделал пользовательское действие scriptlink и указал бы его на файл, который я размещаю (в sharepoint или где-то еще). Вы можете настроить некоторый powershell для циклического прохождения вашего арендатора и установить настраиваемое действие для каждого семейства сайтов. Ознакомьтесь с этой записью о том, как выполнить это с помощью powershell

person sottenad    schedule 14.04.2017
comment
Имейте в виду, что простое добавление блока сценария, как указано выше, вероятно, не будет (всегда) работать, если включена функция MDS. - person Nils; 19.08.2017

Я создал решение для демонстрации простой интеграции piwik в SharePoint по адресу https://github.com/nils-a/piwik4sp.

Он будет работать, даже если MDS (стратегия минимальной загрузки) активен. Однако это решение для песочницы, и, как вы сказали, у вас есть ~ 5000 коллекций сайтов, которые вы должны изменить, чтобы иметь только один экземпляр файлов (т. Е. Используйте решение для фермы или выделенный сайт, если решение для фермы не вариант.)

Если вы никогда (никогда) не включали MDS, должно помочь следующее действие:

<CustomAction Id="Piwik4SP.Script.Link"
    Location="ScriptLink"
    Sequence="202"
    ScriptBlock="var _paq = _paq || [];
      /* tracker methods like 'setCustomDimension' should be called before 'trackPageView' */
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u='//my-piwik-url/';
        _paq.push(['setTrackerUrl', u+'piwik.php']);
        _paq.push(['setSiteId', '3']);
        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+'piwik.js'; s.parentNode.insertBefore(g,s);
      })();" />

Однако для хорошей интеграции (даже с MDS) используйте scriptLink для развертывания вашего js-файла примерно так:

<CustomAction Id="Piwik.Script.Link"
    Location="ScriptLink"
    Sequence="202"
    ScriptSrc="~sitecollection/SiteAssets/Piwik4SP/piwik.js" />

в «вашем» piwik.js убедитесь, что вы регистрируете модуль для MDS:

window.RegisterModuleInit('/path/to/your/piwik.js', someFuncToCallOnNavigate);

в someFuncToCallOnNavigate вы должны проверить, загружен ли уже piwik.js, и загрузить его, если это необходимо. После этого вы можете начать отслеживать, как описано в API piwik. Имейте в виду, однако, что - если MDS включен - большинство ваших страниц-запросов будут start.aspx. Поэтому вы, вероятно, захотите изменить URL-адрес, прежде чем отслеживать его. См. этот файл о том, как я пытался решить эту проблему.

person Nils    schedule 19.08.2017