默认情况下,Matomo的Javascript追踪代码收集你的分析数据,然后上传到matomo服务器。Matomo服务地址会被指定到追踪代码中(比如var u=”//piwik.example.org”;)。还有这样的场景,你需要将一份分析数据同时发送到不同的Matomo服务器,或者上传同一份数据给同一个matomo实例的不同站点。本文将介绍此场景的实现方法。
注意:如果你还没有升级到matomo 2.16.2及之后的版本,请马上升级。
欢迎加入Matomo中文网官方QQ群255820112(点击滚动至本页末可扫描二维码),随时提问,有问必答。
复制同一份数据到同一matomo服务器的不同站点
你可能需要拷贝一份分析数据到同一matomo实例的不同站点。
推荐方案:使用Roll Reporting插件
当你需要复制一份数据到不同的站点,或者合并不同站点的数据到一个或多个组(或称为RollUps),推荐方案是使用RollUp Reporting付费插件。此插件相对其他方案有以下优点:a)方便将一个或多个站点进行分组 b)合并后会自动去重复。
替代方案:复制追踪数据
相对于使用RollUp reporting插件的方式,你可以复制追踪数据。方法是使用addTracker方法,此方法需要指定matomo地址和站点ID。
var u=”//piwik.example.org/”;
_paq.push([‘setTrackerUrl’, u+’piwik.php’]);
_paq.push([‘setSiteId’, ‘1’]);
// 接收数据的另一个站点ID
var websiteIdDuplicate = 7;
// 接收数据的piwik接口地址
_paq.push([‘addTracker’, piwikUrl = u+’piwik.php’, websiteIdDuplicate]);
// Your data is now tracked in both website ID 1 and website 7 into your piwik.example.org server!
//你的数据会被上传到piwik.example.org的不同站点中
As this solution causes every visitor’s event, pageview, etc. to be tracked twice in your Matomo server, we generally do not recommend it.
由于此方案会在matomo服务器上对每个访客的event,pageview记录两次,我们一般不建议此方案。
同一份分析数据收集到不同的matomo服务器
下面的示例代码展示了如何使用addTracker方法将同一份分析数据发送到不同的matomo服务器。第一个Matomo服务器地址是piwik.example.org/piwik.php,对应站点ID是1。第二个matomo服务器是analytics.example.com/piwik.php ,对应站点是77
<script type=”text/javascript”>
var _paq = window._paq || [];
_paq.push([‘trackPageView’]);
_paq.push([‘enableLinkTracking’]);
(function() {
var u=”//piwik.example.org/”;
_paq.push([‘setTrackerUrl’, u+’piwik.php’]);
_paq.push([‘setSiteId’, ‘1’]);
// Add this code below within the Matomo JavaScript tracker code
// Important: the tracker url includes the /piwik.php
var secondaryTracker = ‘https://analytics.example.com/piwik.php’;
var secondaryWebsiteId = 77;
// Also send all of the tracking data to this other Matomo server, in website ID 77
_paq.push([‘addTracker’, secondaryTracker, secondaryWebsiteId]);
// That’s it!
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>
自定义某个追踪器实例
默认情况下通过addTracker增加的追踪器实例使用的是和主追踪器一样的配置(包括cookies,自定义维度,用户id,下载或链接追踪,域名和子域等)。如果你不想使用默认的配置,可以通过调用Piwik.getAsyncTracker(optionalPiwikUrl, optionalPiwikSiteId)方法来实现。这个方法会返回追踪器实例对象,你可以直接调用对象的方法配置你需要的参数。
直接调用JavsScript API来复制追踪数据(不通过_paq.push)
如果你想将分析数据收集到同一服务器的不同站点,或者不同的matomo服务器,可以使用Piwik.getTracker()方法。每次调用都会返回不同的Matomo追踪器对象。
<script type=”text/javascript”>
window.piwikAsyncInit = function () {
try {
var piwikTracker = Piwik.getTracker(“http://URL_1/piwik.php”, 1);
piwikTracker.trackPageView();
var piwik2 = Piwik.getTracker(“http://URL_2/piwik.php”, 4);
piwik2.trackPageView();
} catch( err ) {}
};
</script>
piwikAsyncInit方法会在Matomo追踪器被加载和初始化的时候被调用。在较早之前的版本,你必须使用同步加载。
备注:你也可以在获取追踪器对象之后再设置服务器地址和站点ID。
// we replace Piwik.getTracker(“http://example.com/piwik/”, 12)
var piwikTracker = Piwik.getTracker();
piwikTracker.setSiteId( 12 );
piwikTracker.setTrackerUrl( “http://example.com/piwik/” ); piwikTracker.trackPageView();