Интеграция 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 -->

3 ответа

Если у вас есть структура надстройки в вашей ферме, вы также можете взглянуть на надстройку интеграции с Web Analytics.

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

Я создал решение для демонстрации простой интеграции 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-адрес перед его отслеживанием. Смотрите этот файл о том, как я пытался решить эту проблему.

Другие вопросы по тегам