octfx/plausible
集成plausible分析
Requires
- php: >=8.0
- ext-json: *
- composer/installers: >=1.0.1
Requires (Dev)
README
Plausible Analytics是一个简单、轻量级(< 1 KB)、开源且尊重隐私的Google Analytics替代品。它不使用cookies,完全符合GDPR、CCPA和PECR。
查看https://github.com/plausible/analytics
安装
- 下载、解压并将文件放置在您的extensions/文件夹中名为Plausible的目录下。
- 在您的LocalSettings.php文件底部添加以下代码
wfLoadExtension( 'Plausible' ); $wgPlausibleDomain = "https://#"; $wgPlausibleDomainKey = "mywiki.example.com"; // change to your site address $wgPlausibleApikey = ''; // Only necessary when using Extension:PageViewInfo
- 根据需要配置。
- 完成 - 导航到您的维基百科的Special:Version以验证扩展是否成功安装。
配置
包含的跟踪脚本
以下跟踪模块可以通过在LocalSettings.php中设置提供的配置键为true来激活。
服务器端跟踪
某些事件可以在不依赖包含的plausible客户端脚本的情况下在服务器端发送。
以下自定义事件可以激活
# Default Configuration $wgPlausibleServerSideTracking = [ // Event Name: pageview 'pageview' => false, // Event Name: 404 'page404' => false, // Event Name: Page: Edit 'pageedit' => true, // Page has been successfully edited // Event Name: Page: Delete 'pagedelete' => true, // Page has been deleted // Event Name: Page: Undelete 'pageundelete' => true, // Page has been undeleted // Event Name: Page: Move 'pagemove' => true, // Page was moved // Event Name: User: Register 'userregister' => false, // A new user registered // Event Name: User: Login 'userlogin' => false, // A user logged in // Event Name: User: Logout 'userlogout' => false, // A user logged out // Event Name: File: Upload 'fileupload' => true, // A file was uploaded // Event Name: File: Delete 'filedelete' => true, // A file was deleted // Event Name: File: Undelete 'fileundelete' => true, // A file was undeleted // Event Name: Search: Not found 'searchnotfound' => true, // A searched term was not found / has no title on the wiki // Event Name: Search: Found 'searchfound' => true, // A searched term was found / has a corresponding title on the wiki ];
事件/目标名称
此扩展选择以下约定来命名事件/目标:主题:事件/操作。
跟踪自定义事件
https://github.com/plausible/docs/blob/master/docs/custom-event-goals.md
如果您想跟踪自定义事件目标,如按钮点击或表单完成,您必须使用JavaScript从您的网站触发这些自定义事件。
脚本需要放置在MediaWiki:<Your Skin>.js中,例如MediaWiki:Citizen.js。
示例:跟踪Skin:Citizen上的编辑按钮点击。
if (typeof window.plausible === 'undefined') { return; } document.querySelector('#ca-edit a').addEventListener('click', function (event) { plausible('Edit Button: Click'); });
通过CSS类
通过设置$wgPlausibleEnableTaggedEvents = true;,可以跟踪点击元素,通过设置CSS类。请参阅官方文档
您也可以直接在HTML中添加类名。如果您可以编辑要跟踪的元素的原始HTML代码,您也可以直接在HTML中添加类。例如
<!-- before -->
<button>点击我</button>
<!-- after -->
<button class="plausible-event-name=Button+Click">点击我</button>或者如果您的元素已经有class属性,只需用空格分隔新的类
<!-- before -->
<button class="some-existing-class">点击我</button>
<!-- after -->
<button class="some-existing-class plausible-event-name=Button+Click">点击我</button>
当您向Plausible发送自定义事件时,它们不会自动显示在您的仪表板上。您必须配置目标以使转换数字显示出来。
忽略页面
https://github.com/plausible/docs/blob/master/docs/excluding-pages.md#common-use-cases-and-examples
默认情况下,Plausible Analytics跟踪您安装片段的每个页面。如果您不希望Plausible跟踪特定页面,请勿在这些页面上包含片段。
常见用例和示例
Lua集成
如果Extension:PageViewInfo已激活,plausible公开以下函数
mw.ext.plausible.topPages()返回过去一天的顶级页面和查看次数。该表按页面查看次数排序,可以使用ipairs迭代。
示例
local result = mw.ext.plausible.topPages() > { { page = "Foo", views = 100 }, { page = "Bar", views = 80 }, { [...] } }
或者可以调用此函数以计算过去N天的查看次数,例如mw.ext.plausible.topPages( 30 )。
这很昂贵,因为没有使用缓存。
mw.ext.plausible.pageData( titles, days )返回过去N天给定标题的页面查看次数。
示例
local result = mw.ext.plausible.pageData( { "Foo", "Bar" }, 5 ) > { ["Foo"] = { ["2023-08-04"] = 10, ["2023-08-05"] = 1, ["2023-08-06"] = 4, ["2023-08-07"] = 7, ["2023-08-08"] = 1, ["2023-08-09"] = 4, }, ["Bar"] = { ["2023-08-04"] = 100, ["2023-08-05"] = 14, ["2023-08-06"] = 54, ["2023-08-07"] = 7, ["2023-08-08"] = 31, ["2023-08-09"] = 1, }, }
mw.ext.plausible.siteData( days )返回给定过去N天的网站访问量。
示例
local result = mw.ext.plausible.siteData( 5 ) > { ["2023-08-04"] = 10, ["2023-08-05"] = 1, ["2023-08-06"] = 4, ["2023-08-07"] = 7, ["2023-08-08"] = 1, ["2023-08-09"] = 4, }