2017-04-13 63 views
1

什么是将Piwik 3.0.2分析整合到SharePoint 2016内部部署服务器场的干净方法? Piwik本身建议将以下代码片段嵌入网页的头部。如何以干净和支持的方式为我们所有〜5000个网站集合实现这一目标?感谢您的帮助:)将Piwik Analytics集成到SharePoint 2016中

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

回答

0

如果是我,我会做一个scriptlink自定义操作,它指向一个文件我的主机(在SharePoint或其他)。您可以安装一些PowerShell来循环租户,并将自定义操作安装到每个网站集。退房this write up on how to accomplish this with powershell

+1

请记住,简单地增加一个脚本块如上面大概不会(总是)工作,如果MDS启用。 – Nils

0

我已经创建了一个解决方案来演示在https://github.com/nils-a/piwik4sp的SharePoint中简单的piwik集成。

即使MDS (minimal download strategy)处于活动状态,它也能正常工作。但是,这是一个沙盒解决方案,正如您所说的,您应该修改约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-文件like this

<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已经加载和负载。之后,您可以开始跟踪记录piwik api。请注意,尽管如此 - 如果MDS已启用 - 您的大部分页面请求将为start.aspx。所以你可能想在跟踪它之前修改url。关于我如何解决这个问题,请参阅this file