如何开发 Piwik 插件

如何开发 Piwik 插件,第1张

1,插件的作用

1,收集目前piwik目前不能跟踪的数据

2,定义新的小物件(widgets)能够用当前可用的或者新的数据形成可见的图像等。(类似形成报表?)

3,定义新的或者覆盖已经存在的项目来定制我们自己的Piwik

4,提供某种API,并且自动生成我们易于理解的数据格式。

2,统计跟踪是如何工作的。

在我们开始写我们自己的插件之前,我们要知道piwik是如何跟踪并且加工数据的。最好的办法是我们安装一个新的Piwik程序,并观察他的数据库布局。

数据库图示地址:http://cdn.geekmonkey.org/assets/files/000/000/025/screen/piwik-db-schema.png?1356779711

3,跟踪:

每当有访问者来访问我们可用piwik的网站的时候,JavaScript都会提交一个访问过piwik.php脚本的关于访问者以及访问页面的最基本的数据设置信息,这个脚本会携带合法的数据,并将他存放到数据库中去。跟踪插件能够修改并添加数据

例如:

_log_visit 表:存储每个新的访问实体

_log_link_visit_action:访问者随后访问的页面。

_log_action: 目前为止,piwik追踪到的目前访问者访问过的页面作为实体存放到这类表中。这类表是被_log_link_visit_action引用的。

4,处理

未加工的数据是指在我们追踪过程中不能被直接展示出来的数据。对于数据库来说,计算所有的请求负荷太高。因此,piwik处理这些数据为可视化,这个处理叫做存档。

当你访问piwik接口的时候就会产生存档。在高流量网站上,存档应该由cronjob来完成,原数据被处理并放到存档表中。

5,存档

每个月的由piwik监测的数据,在数据库中会创建两个表,这两个表分别为:_archive_YEAR_MONTH,_archive_numeric_YEAR_MONTH,包含的内容为那个月的处理数据

比如2013-06那么对应的表为:piwik_archive_2013_06,piwik_archive_numeric_2013_06

6,插件结构:

文件结构:

插件都放在plugins/文件中,每个插件都是它的子文件夹

plugins/

|-- VisitFrequency

| |-- API.php

| |-- Controller.php

| |-- templates

| | |-- index.tpl

| | `-- sparklines.tpl

| `-- VisitFrequency.php

多数的插件都不少与3个php文件和一些视图模板。

基本布局

为了能够让piwik插件能够工作,插件系统要遵循一些约定

<a>:插件要有一个和它所在插件目录名称相同的php文件。所以如果你想开发一个名为VisitorForeCast的插件,就需要创建一个名为 VisitorForeCast的目录,并且目录里包含一个名为VisitorForeCast.php文件。

<b>:创建一个继承Piwik_Plugin类的Piwik_VisitorForeCast 类

<?php class Piwik_VisitorForecast extends Piwik_Plugin { }

plugins/VisitorForecast/VisitorForecast.php

Piwik_Plugin有一个抽象方法getInformation()的抽象类,我们要继承,他的返回值为如下内容,当然也可以参考其他插件,下面内容为core/Plugin.php 内容,这个数组必须返回一个关联数组,这个数组包含有关于这个插件相关信息。

/**

21 * Returns the plugin details

22 * - 'description' =>string// 1-2 sentence description of the plugin

23 * - 'author' =>string // plugin author

24 * - 'author_homepage' =>string// author homepage URL (or email "mailto:youremail@example.org")

25 * - 'homepage' =>string // plugin homepage URL

26 * - 'license' =>string// plugin license

27 * - 'license_homepage' =>string // license homepage URL

28 * - 'version' =>string// plugin version numberexamples and 3rd party plugins must not use Piwik_Version::VERSION3rd party plugins must increment the version number with each plugin release

29 * - 'translationAvailable' =>bool // is there a translation file in plugins/your-plugin/lang/* ?

30 * - 'TrackerPlugin' =>bool// should we load this plugin during the stats logging process?

31 *

32 * @return array

33 */

VisitorForeCast.php 文件的完整内容为:

<?php

class Piwik_VisitorCast extends Piwik_plugin {

public function getInformation() {

return array(

'description' =>'Provide a forecast of visits for the day',

'author' =>'Your Name',

'author_homepage' =>'http://yourwebsite.com',

'homepage' =>'http://example.com',

'license' =>'GPL v3 or later',

'license_homepage' =>'http://www.gnu.org/licenses/gpl.html',

'version' =>'0.1',

'translationAvailable' =>false,

)

}

}

?>

7,翻译

Piwik可用超过45种语言,当我们想要创建我们习惯的插件的时候,我们可以利用piwik国际化的特性。如果想让我们的插件支持转译(translations),我们需要 在getInformation方法中设置‘translationAvailable’=true,设置完之后,Piwik将会在我们的插件的子文件夹lang/中寻找这个支持翻译功能的字符串,无论我们想支持那种语言,我们都要准本一个用ISO(介http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes),639-1(http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes),alpha-2(http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)命名的php文件。

每个语言文件(langle file)都要包含一个名字为:$translations的关联数组,这个数组的键($key)映射到某个提供翻译(translation)的文件。而这些键($keys)是所有的提供翻译的文件之间共享的。当我们切换支持不同语言的时候,所依赖的正是这个语言文件。通常,这些键是用插件的名字作为前缀,例如,我们的VisitorForecast插件,如果想支持英文翻译那么就要命名为en.php ,完整路径(pugins/VisitorForecast/lang/en.php),内容如下

<?php

$translations = array('VisitorForecast_PluginDescription'=>'')

?>

现在,我们给了翻译文件一个描述行的键(VisitorForecast_PluginDescription),这样一来,翻译者工作起来就非常容易。Piwik提供了一个名为Piwik_Translate($key)方法,它将会根据(依赖)用户选定语言返回用户想要的转化语言版本。

public function getInformation() { return array( 'description' =>Piwik_Translate('VisitorForecast_PluginDescription'),

[..]

)

}

Plugin Information with i18n

好了,翻译的内容基本介绍完了,有点晕。。。我们来整理下思路,如果看过wordpress的,可能会觉得有些地方有点像,都是为开发插件提供了最大的便利。便于部署,而不用动核心代码。

现在我们已经有两个文件。

1,Piwik_VisitorForecast.php, 它和插件的名字基本相同,只是用Piwik做为前缀,并且,他要继承Piwik_Plugin类。它有一个方法名字叫getInformation(),它返回一个关于我们开发插件的描述信息,作者,作者的主页,版本信息等。到现在此文件中的内容应该是如下内容

class Piwik_VisitorForecast extends Piwik_Plugin{

public function getInformation() {

$info = array(

//注意:VisitorForecast_PluginDescription'是我们在en.php文件中数组的键

'description' =>Piwik_Translate('VisitorForecast_PluginDescription'),'author'=>'author_name',

'author_home'=>'home page', 'version'=>Piwik_Version::VERSION,

)

return $info

}

}

2,en.php文件:他主要是为Piwik_Translage方法提供那个键,使得他获取到en.php文件中的内容,那例子中的en.php文件中的内容就应该是下面这样的。

命名为en.php ? 为什么,上边说了他要符合ISO,639-1,alpha-2的命名,具体可以看上边三个字母后面的链接。就知道为什么是en.php 而不是eng.php了。

<?php

$translations = array(

'VisitorForecast_PluginDescription'=>'Provide a forecast of visits for the day',

)

?>

8,Hooks(钩子,wordpress中也有,我们部门经理(大牛)很提倡用wordpress哦!)

在Piwik内部,用了一个名字叫EventDispatcher(事件调度)的PHP包。我们的插件能将一个函数钩到某个预定义的事件上,当事件触发的时候会调用这个函数。

如果我们的插件需要注册任何钩子,我们就需要在我们的插件类中实现getListHooksRegistered 方法。还必须要返回一个数组,将钩子的名称和回调函数映射。

比如说,如果你的插件想要注意到每个新的访问者,Piwik提供了一个叫Tracker.newVisitorInformation

钩子,每当Piwik跟踪到一个新的访问者的时候,它就会被触发。

public function getListHooksRegistered(){

return array(

'Tracker.newVisitorInformation'=>'addVisitorInformation'

)

}

public function addVisitorInformation($notification) {

//我们通过$notification参数的引用和钩子关联起来。

$visitorInfo = &$notification->getNotificationObject()

//获取referrer_url

$url = $visitorInfo['referrer_url']

//我们可以用这个url做一些事情

}

当事件触发的时候,回调函数会取回一个对象通知,这个对象的内容取决于钩子

phpMyVisites

phpMyVisites是一个网站流量统计系统,它能够提供非常详细的统计报告和高级图形报表。phpMyVisites不是一个Apachelog分析工具,它建有自己的log。它的特点包括: 安装部署:提供可视化的安装向导,并且使用简单只要把一段简单的Javascript代码添加到你网站的页面中就能够马上开始收集访问者的信息。一个简洁,友好的界面可用来展示数据和帮助数据分析。提供简洁,明了的图形分析报表。安全:phpMyVisites能够最大限度地阻止入侵和外部攻击。支持多网站统计多用户:可以添加无限个用户并对每个用户赋予不同的管理权限(针对某一个网站的查看和管理的权限)。国际化支持:phpMyVisites提供 30种语言包。能够准确统计一段时间内的访问量(天/周/月/年)。访问者的回头率:新访问者,经常访问者,有规律性的访问者。提供多种文件格式的统计报告(PDF,Image等)。对被统计的网页进行分组/分级。访问者分析:统计访问者是从哪个页面离开网站的和从哪个页面进入网站或通过哪个搜索引擎的关健字进入网站,在网站的停留时间,所访问的页面等。可通过e-mail或RSS聚合获取网站的流量信息。

phpTrafficA

phpTrafficA是一个统计工具用于网站流量分析。基于PHP与MySQL开发。它能够统计你网站的流量,包括来自哪些搜索引擎,关健字和其它转向你网站的链接。它还能够分析浏览你网站所用的 *** 作系统,浏览器,访问者停留时间等等。

AudiStat

AudiStat是一个基于PHP+MySQL开发的,轻量级的,占用服务器很少资源的网站流量统计系统。 它能够统计点击量,涉及的页面,访问者国家,访问者域名,访问者所用的浏览器等。统计信息展示页面可以通过Html代码自己定制。在最新版本中还加入跟踪google爬虫的功能。

piwik

Piwik是一套基于Php+MySQL技术构建,能够与Google Analytics相媲美的开源网站访问统计系统,前身是phpMyVisites。Piwik可以给你详细的统计信息,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等,并且采用了大量的AJAX/Flash技术,使得在 *** 作上更加便易。此外,它还采用了插件扩展及开放API架构,可以让开发人员根据自已的实际需求创建更多的功能.

Webanalyse

采用PHP4开发的网站流量统计工具。WebAnalyse没有使用任何数据库,或Apache logs支持。以便让安装更加快速和简单。

Open Web Analytics

Open Web Analytics是一个开源的网站流量统计系统。基于PHP/Open Flash Chart/Ajax技术开发,既可以单独使用也可以与WordPress、Gallery&MediaWiki集成使用。支持多个网站,集成 Google Maps,RSS/Atom订阅跟踪等功能。

SlimStat

SlimStat是一个基于PHP+MySQL开发的网站流量访问统计分析系统,类似于Google Analytics。它可以按时间段显示:每个页面的访问数,涉及的URL和域名,搜索关键字,浏览器种类、 *** 作系统类型、国家、分辩率等。

具体内容去参考资料里面看吧,个人比较推荐piwik


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11259078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存