rs/matomo-google-charts
Composer 安装命令:
composer require rs/matomo-google-charts
包简介
A package for creating an analytics dashboard using Matomo data and Google Charts
README 文档
README
A Laravel package for building analytics dashboards using data from Matomo and Google Charts. It fetches analytics data from a Matomo instance, caches it, and transforms it into Google Charts-compatible data structures that can be served as JSON API resources.
Requirements
- PHP 8.1+
- Laravel 10+
Installation
composer require rs/matomo-google-charts
The package uses Laravel's auto-discovery, so the service provider and facade are registered automatically.
Publish the config
php artisan vendor:publish --provider="RedSnapper\MatomoCharts\MatomoChartServiceProvider" --tag=config
This publishes config/piwik.php.
Environment variables
Add the following to your .env file:
MATOMO_API_ENABLED=true MATOMO_API_KEY=your-matomo-token MATOMO_SITE_ID=1
When MATOMO_API_ENABLED is false (the default), the package uses a fake API implementation that returns empty data, allowing you to develop without a live Matomo connection.
Configuration
The published config/piwik.php file contains all available options:
| Key | Description | Default |
|---|---|---|
api_enabled |
Enable live Matomo API calls | false |
piwik_url |
Matomo server URL | https://matomo.redsnapper.net |
api_key |
Matomo authentication token | null |
format |
API response format (json, xml, php, etc.) |
json |
period |
Default period for API queries | last30 |
site_id |
Default Matomo site ID | null |
verify_peer |
SSL certificate verification | true |
http_timeout |
HTTP request timeout (seconds) | 500.0 |
Usage
Creating chart types
Define your chart by extending AnalyticsChart. Set the chart metadata as properties and override query() to fetch data from the Matomo API:
use RedSnapper\MatomoCharts\Analytics\Models\AnalyticsChart; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartComponent; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartStyle; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartType; class BrowserChart extends AnalyticsChart { public string $title = 'Browsers'; public array $columns = ['Browser', 'Visits']; public array $properties = ['label', 'nb_visits']; public AnalyticsChartComponent $component = AnalyticsChartComponent::GOOGLE_CHART; public AnalyticsChartType $type = AnalyticsChartType::PIE; public AnalyticsChartStyle $style = AnalyticsChartStyle::STANDARD; public function query(): void { $this->matomoAPI ->setSiteId($this->matomoSiteId) ->setDate($this->startDate, $this->endDate); $this->data = $this->matomoAPI->fetchBrowserData()->get(); } public function getTextView(): ?View { return null; } }
The $properties array maps Matomo response fields to chart columns. The $columns array provides the column headings. The base class automatically processes the raw Matomo data into a format compatible with Google Charts.
Creating mini charts (with comparison)
Mini charts show a metric with a comparison against a previous period. Extend AnalyticsMiniChart:
use RedSnapper\MatomoCharts\Analytics\Models\AnalyticsMiniChart; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartComponent; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartStyle; use RedSnapper\MatomoCharts\Analytics\Enums\AnalyticsChartType; class VisitorsMiniChart extends AnalyticsMiniChart { public string $title = 'Total Visitors'; public array $columns = ['Week', 'Visitors']; public array $properties = ['label', 'nb_uniq_visitors']; public AnalyticsChartComponent $component = AnalyticsChartComponent::GOOGLE_CHART; public AnalyticsChartType $type = AnalyticsChartType::LINE; public AnalyticsChartStyle $style = AnalyticsChartStyle::MINI; public bool $hasValueComparison = true; public function query(): void { $this->matomoAPI ->setSiteId($this->matomoSiteId) ->setDate($this->startDate, $this->endDate); $this->data = $this->matomoAPI->fetchWeeklyData()->get(); // Fetch previous period data for comparison $this->matomoAPI->setDate($this->preStartDate, $this->preEndDate); $this->preData = $this->matomoAPI->fetchWeeklyData()->get(); } public function getTextView(): ?View { return null; } public function getStatIcon(): ?string { return self::ICON_VISITORS; } public function getComparisonData(): array { return [ 'value' => $this->data->sum('nb_uniq_visitors'), 'preValue' => $this->preData->sum('nb_uniq_visitors'), 'label' => 'visitors', ]; } }
Available icons: calendar, globe, monitor, views, visitors.
Using the facade
Use the MatomoChart facade to create charts and JSON resources in your controllers:
use RedSnapper\MatomoCharts\Facades\MatomoChart; // Get a chart model instance $chart = MatomoChart::makeChart(BrowserChart::class, $matomoSiteId); // Get a JSON resource (for API responses) $resource = MatomoChart::makeChartResource(BrowserChart::class, $matomoSiteId); // Mini charts $miniChart = MatomoChart::makeMiniChart(VisitorsMiniChart::class, $matomoSiteId); $miniResource = MatomoChart::makeMiniChartResource(VisitorsMiniChart::class, $matomoSiteId);
Date filtering
Date ranges are automatically resolved from the HTTP request query parameters:
| Parameter | Description | Default |
|---|---|---|
dateFrom |
Start date (any Carbon-parseable string) | Start of previous month |
dateTo |
End date (any Carbon-parseable string) | End of previous month |
A comparison period of equal length is automatically computed from the primary date range.
Chart resource JSON structure
AnalyticsChartResource returns:
{
"style": "standard",
"title": "Browsers",
"text": "",
"component": "GoogleChart",
"type": "PieChart",
"data": [
["Browser", "Visits"],
["Chrome", 1200],
["Firefox", 800]
],
"columns": ["Browser", "Visits"],
"options": {},
"pageBreakAfter": false
}
AnalyticsMiniChartResource additionally includes:
{
"comparison": {
"enabled": true,
"value": "1,500",
"preValue": "1,200",
"difference": "300",
"label": "visitors"
},
"icon": "<svg>...</svg>"
}
Available chart types
| Enum | Google Charts type |
|---|---|
AnalyticsChartType::GEO |
GeoChart |
AnalyticsChartType::COLUMN |
ColumnChart |
AnalyticsChartType::LINE |
LineChart |
AnalyticsChartType::PIE |
PieChart |
AnalyticsChartType::STANDARD_TABLE |
StandardTable |
Available Matomo data fetchers
The MatomoAPIInterface provides methods you can use in your chart's query() method:
fetchWeeklyData()- Weekly aggregated metricsfetchPageViewData()- Page URL datafetchCountryData()- Visitor countriesfetchBrowserData()- Browser breakdownfetchDeviceTypes()- Device type breakdownfetchOSVersions()- OS version breakdownfetchDailyVisitorData(Carbon $startDate)- Visits by day of weekfetchHourlyVisitorData(Carbon $startDate)- Visits by hourfetchWebsiteReferrerData()- Referring websitesfetchSiteSearchKeywordData()- Site search keywordsfetchCampaignData()- Campaign referral data
All fetch methods are chainable and return a MatomoCollection (extended Laravel Collection) via ->get().
Caching
API responses are automatically cached until midnight using Laravel's cache system. Cache keys are scoped by site ID, segment, and date range to avoid collisions.
Testing
composer test
License
MIT
rs/matomo-google-charts 适用场景与选型建议
rs/matomo-google-charts 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 152 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 11 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rs」 「matomo」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rs/matomo-google-charts 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rs/matomo-google-charts 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rs/matomo-google-charts 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Matomo (former piwik) analytics
A combination of clientside and serverside analytics for PHP-based websites.
A Laravel facade/wrapper for the matomo/matomo-php-tracker for server-side Matomo tracking.
A Laravel facade/wrapper for the matomo/matomo-php-tracker for server side Matomo tracking.
Matomo und Google Analytics Tracking inkl. Matomo-Dashboard im OXID-Admin.
Contao 4 Hintergrund-Tracking mit Matomo
统计信息
- 总下载量: 152
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-11-29