加载站点后,将自定义会话参数添加到 Piwik

Add custom session parameter to Piwik after the site has been loaded

在执行 Piwik 跟踪代码后,是否有任何经过验证的方法可以将自定义会话参数添加到当前会话?

目前,我正在使用此代码:

window._paq.push(['trackEvent', 'vendor', 'VND001' ,'value']);

问题是这段代码不能可靠地工作。我想这可能是因为 Piwik 跟踪代码已经执行并发送到服务器,但我不确定。

来自JavaScript API

对于异步跟踪,配置和跟踪调用被推送到全局 _paq 数组上执行,独立于 piwik.js 的异步加载。格式为:

_paq.push([ 'API_method_name', parameter_list ]);

所以这对你来说似乎没问题。

当您谈论不可靠的行为时,您可能会在刷新页面(只需 bash F5)时绕过脚本文件的加载,因为它已被先前的请求缓存。然后这个对 _paq 的调用可能是 undefined。尝试使用 ctrl+F5 查看行为是否改变。

还要注意初始化部分:var _paq = _paq || []; 它定义了先前填充的数组或空数组。把这个放在你的代码前面也没什么坏处,但是你要注意闭包:

(function(){
    var _paq = _paq || [];
    _paq.push(['trackEvent', 'vendor', 'VND001' ,'value']);
}());

现在您通常会先获取当前跟踪器:

var piwikTracker = Piwik.getTracker(12, 'http://example.com/piwik/');
//piwikTracker.setSiteId(12);
//piwikTracker.setTrackerUrl('http://example.com/piwik/');
piwikTracker.trackEvent('vendor', 'VND001' ,'value');

但我不完全确定这是否 与 Piwik 2.16.1 或更早版本相关。随时测试它们并告诉我^^