Matomo追踪器部署系列之二:同一网页部署多个Matomo追踪器

默认情况下,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();

发表评论