iferas93 / laravel-analytics-laravel-10
Laravel 的分析跟踪
Requires
- php: ^7.2 || ^8.0 || ^8.1
- illuminate/config: ~5.0 || ^6.20 || ^7.24 || ^8.40 || ^9.0 || ^10.0
- illuminate/session: ~5.0 || ^6.20 || ^7.24 || ^8.40 || ^9.0 || ^10.0
- illuminate/support: ~5.0 || ^6.20 || ^7.24 || ^8.40 || ^9.0 || ^10.0
Requires (Dev)
- laravel/framework: ~5.0 || ^6.20 || ^7.24 || ^8.40 || ^9.0 || ^10.0
Suggests
- martijnc/php-csp: For handling Content Security Policy matters
This package is auto-updated.
Last update: 2024-09-15 12:12:50 UTC
README
快速入门
composer require ipunkt/laravel-analytics
您可以使用 Analytics
门面。
在您的 .env
文件中添加以下变量,并根据您的喜好设置它们
ANALYTICS_PROVIDER=GoogleAnalytics
ANALYTICS_TRACKING_ID=your-tracking-id
我们支持将整个配置作为环境变量。请参阅配置部分。
最后,在您的 </head>
关闭标签上方放置此代码
{!! Analytics::render() !!}
您现在已启用 Google Analytics。享受吧!
安装
将以下行添加到您的 composer.json 中
"require": {
"ipunkt/laravel-analytics": "~3.0"
}
将 Ipunkt\LaravelAnalytics\AnalyticsServiceProvider::class,
添加到 app/config/app.php
中的 providers
。
可选:将 'Analytics' => Ipunkt\LaravelAnalytics\AnalyticsFacade::class,
添加到 app/config/app.php
中的 aliases
。
运行 php artisan vendor:publish --provider="Ipunkt\LaravelAnalytics\AnalyticsServiceProvider"
然后编辑 config
中的 analytics.php
以满足您的需求。我们在服务提供程序中进行配置合并,因此您的本地设置将保持不变。
对于 laravel 7.x,请使用 3.x 版本。
"require": {
"ipunkt/laravel-analytics": "~3.0"
}
对于 laravel 6.x,请使用 2.x 版本。
"require": {
"ipunkt/laravel-analytics": "~2.0"
}
对于 php < 7.2 或 laravel < 6.0,请使用 1.x 版本。
"require": {
"ipunkt/laravel-analytics": "~1.0"
}
配置
- 提供程序
- 要使用的提供程序,可能的提供程序有:
GoogleAnalytics
,NoAnalytics
Google Analytics
- tracking_id
- 跟踪 ID,您的 Google Analytics 跟踪 ID
- tracking_domain
- 跟踪域名,未设置或设置为 "
auto
" 以自动回退 - tracker_name
- 跟踪器名称
- display_features
- 启用显示功能插件,可能的值:
(true|false)
- anonymize_ip
- 匿名化用户 IP,可能的值:
(true|false)
- auto_track
- 自动跟踪当前页面视图,可能的值:
(true|false)
- debug
- 启用调试模式,可能的值:
(true|false)
- optimize_id
- 启用 [Google Analytics](https://support.google.com/optimize/answer/6262084) 的优化功能
基于环境的配置
您可以通过更改/设置 .env 文件中的环境变量来配置整个设置。(如果您使用 Laravel Dusk,则为 .env.dusk 文件)。
以下是配置值与基于环境名称的映射
- tracking_id
- ANALYTICS_TRACKING_ID
- tracking_domain
- ANALYTICS_TRACKING_DOMAIN (auto)
- tracker_name
- ANALYTICS_TRACKER_NAME (t0)
- display_features
- ANALYTICS_DISPLAY_FEATURES (false)
- anonymize_ip
- ANALYTICS_ANONYMIZE_IP (true)
- auto_track
- ANALYTICS_AUTO_TRACK (true)
- debug
- ANALYTICS_DEBUG (本地环境上为 true)
- optimize_id
- ANALYTICS_OPTIMIZE_ID
此行为已从版本 1.3.2 中集成。
其他
- disable_script_block
- 您可以通过配置值禁用脚本块生成,可能的值:
(true|false)
,默认为 false。
使用方法
在控制器操作(或任何其他地方)中使用以下语句跟踪事件或页面视图
// tracking the current page view
Analytics::trackPage(); // only necessary if `auto_track` is false or Analytics::disableAutoTracking() was called before
// tracking an event
Analytics::trackEvent('category', 'action');
// tracking a custom line
Analytics::trackCustom("ga('send', ......"); // this line will be added within the tracking script
您可以为跟踪设置可选的宣传活动
// creating a campaign
$campaign = new \Ipunkt\LaravelAnalytics\Data\Campaign('Sales2016');
$campaign->setMedium('web')->setSource('IT Magazine')->setKeyword('Hot stuff');
Analytics::setCampaign($campaign);
您可以为跟踪设置用户 ID
// creating a campaign
Analytics::setUserId($userIdentificationHash);
在您的视图或布局模板(例如 blade 模板)中使用以下语句
{!! Analytics::render() !!}
对于 Google Analytics,您应该在 body
标签下方放置此语句
<body>{!! Analytics::render() !!}
依赖注入
您可以通过引用接口来注入分析提供程序
class PageController extends Controller
{
public function show(\Ipunkt\LaravelAnalytics\Contracts\AnalyticsProviderInterface $analytics)
{
$analytics->setUserId(md5(\Auth::user()->id)); // identical to Analytics::setUserId(md5(\Auth::user()->id));
return view('welcome');
}
}
如何使用
GoogleAnalytics
提供程序自动控制 本地环境 的行为以进行测试目的。
有一个内置的提供程序称为 NoAnalytics
。这是用于测试环境的,不跟踪任何内容。因此,您不需要重写代码,只需在选择 provider
中的特殊环境配置时选择此 provider
即可。
在不使用JavaScript的情况下追踪测量
-
登录Google Analytics并创建自定义定义。在那里创建自定义指标。例如:邮件打开,整型,最小值:0 和最大值:1 这将作为
metric1
可用。 -
在你的邮件模板(或页面模板)中,你必须创建一个追踪图像
<img src="{!! Analytics::trackMeasurementUrl('metric1', '1', new Event, new Campaign, md5($user)) !!}" width="1" height="1" style="background-color: transparent; border: 0 none;" />
-
就是这样
内容安全策略
从版本1.3开始支持集成内容安全策略。
请在提供者接口实例上调用 withCSP()
。
然后使用额外的包(或自行实现) martijnc/php-csp
,并在你的中间件或JavaScript发送控制器中使用以下代码
use Phpcsp\Security\ContentSecurityPolicyHeaderBuilder; $policy = new ContentSecurityPolicyHeaderBuilder(); // Set the default-src directive to 'none' $policy->addSourceExpression(ContentSecurityPolicyHeaderBuilder::DIRECTIVE_DEFAULT_SRC, 'none'); // Add the nonce to the script-src directive $policy->addNonce(ContentSecurityPolicyHeaderBuilder::DIRECTIVE_SCRIPT_SRC, $analytics->withCSP()->cspNonce()); foreach ($policy->getHeaders(true) as $header) { header(sprintf('%s: %s', $header['name'], $header['value'])); }
结果看起来像这样
array (size=1) 0 => array (size=2) 'name' => string 'Content-Security-Policy' (length=23) 'value' => string 'default-src 'none'; script-src 'nonce-RandomNonceStringFromAnalyticsProvider';' (length=58)
在渲染你的分析脚本时,nonce
属性将自动添加到你的脚本标签中。
API文档
有关正确使用方法的详细信息,请参阅 Ipunkt\LaravelAnalytics\Contracts\AnalyticsProviderInterface.php
Analytics::render()
上下文:Blade模板、视图
用于渲染正确的JavaScript代码。它必须在所有布局文件中存在,以便追踪你的操作和页面调用。
/**
* returns the javascript code for embedding the analytics stuff
*
* @return string
*/
public function render();
Analytics::trackPage()
上下文:控制器、操作代码
用于追踪页面视图。
/**
* track an page view
*
* @param null|string $page
* @param null|string $title
* @param null|string $hittype
* @return void
*/
public function trackPage($page, $title, $hittype);
Analytics::trackEvent()
上下文:控制器、操作代码
用于追踪事件
/**
* track an event
*
* @param string $category
* @param string $action
* @param null|string $label
* @param null|int $value
* @return void
*/
public function trackEvent($category, $action, $label, $value);
Analytics::trackCustom()
上下文:控制器、操作代码
用于追踪嵌入的分析代码中的自定义脚本行。
/**
* track any custom code
*
* @param string $customCode
* @return void
*/
public function trackCustom($customCode);
Analytics::enableDisplayFeatures()
上下文:控制器、操作代码
启用显示功能,覆盖配置设置 display_features
。
/**
* enable display features
*
* @return GoogleAnalytics
*/
public function enableDisplayFeatures();
Analytics::disableDisplayFeatures()
上下文:控制器、操作代码
禁用显示功能,覆盖配置设置 display_features
。
/**
* disable display features
*
* @return GoogleAnalytics
*/
public function disableDisplayFeatures();
Analytics::enableAutoTracking()
上下文:控制器、操作代码
启用自动追踪,覆盖配置设置 auto_track
。
/**
* enable auto tracking
*
* @return GoogleAnalytics
*/
public function enableAutoTracking();
Analytics::disableAutoTracking()
上下文:控制器、操作代码
禁用自动追踪,覆盖配置设置 auto_track
。
/**
* disable auto tracking
*
* @return GoogleAnalytics
*/
public function disableAutoTracking();
Analytics::trackMeasurementUrl()
上下文:Blade模板、视图
有时你必须追踪测量,例如打开电子邮件通讯。在那里你完全没有JavaScript。
/**
* assembles an url for tracking measurement without javascript
*
* e.g. for tracking email open events within a newsletter
*
* @param string $metricName
* @param mixed $metricValue
* @param \Ipunkt\LaravelAnalytics\Data\Event $event
* @param \Ipunkt\LaravelAnalytics\Data\Campaign $campaign
* @param string|null $clientId
* @param array $params
* @return string
*/
public function trackMeasurementUrl($metricName, $metricValue, Event $event, Campaign $campaign, $clientId = null, array $params = array());
Analytics::setUserId($userId)
上下文:控制器、操作代码
向分析追踪添加用户ID。这个用户ID是一个用户相关的唯一ID。但请注意,你不应该与特定的用户有直接关系 - 它应该对每个用户来说是唯一的,以便进行分析。
此用户追踪是在 Google Analytics 中实现的。
/**
* sets an user id for user tracking
*
* @param string $userId
* @return AnalyticsProviderInterface
*/
public function setUserId($userId);
Analytics::unsetUserId()
上下文:控制器、操作代码
也可以删除用户ID。
/**
* unset an user id
*
* @return AnalyticsProviderInterface
*/
public function unsetUserId();
Analytics::setCampaign($campaign)
上下文:控制器、操作代码
向当前追踪添加活动。
此活动追踪在 Google Analytics 中有文档记录。
/**
* sets a campaign
*
* @param Campaign $campaign
* @return AnalyticsProviderInterface
*/
public function setCampaign(Campaign $campaign);
Analytics::unsetCampaign()
上下文:控制器、操作代码
也可以删除活动。
/**
* unset a possible given campaign
*
* @return AnalyticsProviderInterface
*/
public function unsetCampaign();
Analytics::enableScriptBlock()
上下文:控制器、操作代码
启用 <script>...</script>
块标签的渲染。默认启用,因此您不需要调用此方法。
/**
* render script block
*
* @return GoogleAnalytics
*/
public function enableScriptBlock();
Analytics::disableScriptBlock()
上下文:控制器、操作代码
禁用 <script>...</script>
块标签的渲染。
/**
* do not render script block
*
* @return GoogleAnalytics
*/
public function disableScriptBlock();
Analytics::enableEcommerceTracking()
上下文:控制器、操作代码
启用电商追踪。
/**
* enable ecommerce tracking
*
* @return AnalyticsProviderInterface
*/
public function enableEcommerceTracking();
Analytics::disableEcommerceTracking()
上下文:控制器、操作代码
禁用电商追踪。
/**
* disable ecommerce tracking
*
* @return AnalyticsProviderInterface
*/
public function disableEcommerceTracking();
Analytics::ecommerceAddTransaction()
上下文:控制器、操作代码
将电商交易添加到追踪代码中。
/**
* ecommerce tracking - add transaction
*
* @param string $id
* @param null|string $affiliation
* @param null|float $revenue
* @param null|float $shipping
* @param null|float $tax
* @param null|string $currency
*
* @return AnalyticsProviderInterface
*/
public function ecommerceAddTransaction($id, $affiliation = null, $revenue = null, $shipping = null, $tax = null, $currency = null);
支持使用货币值定义的 多货币 追踪,请在此处定义货币值 这里。
Analytics::ecommerceAddItem()
上下文:控制器、操作代码
将电商商品添加到追踪代码中。
/**
* ecommerce tracking - add item
*
* @param string $id
* @param string $name
* @param null|string $sku
* @param null|string $category
* @param null|float $price
* @param null|int $quantity
* @param null|string $currency
*
* @return AnalyticsProviderInterface
*/
public function ecommerceAddItem($id, $name, $sku = null, $category = null, $price = null, $quantity = null, $currency = null);
支持使用货币值定义的 多货币 追踪,请在此处定义货币值 这里。
Analytics::setCustom()
上下文:控制器、操作代码
添加自定义设置。
/**
* sets custom dimensions
*
* @param string|array $dimension
* @param null|string $value
* @return AnalyticsProviderInterface
*/
public function setCustom($dimension, $value = null)
Analytics::withCSP()
上下文:控制器、操作代码
启用内容安全策略功能。
/**
* enables Content Security Polity and sets nonce
*
* @return AnalyticsProviderInterface
*/
public function withCSP();
Analytics::withoutCSP()
上下文:控制器、操作代码
禁用内容安全策略功能。
/**
* disables Content Security Polity
*
* @return AnalyticsProviderInterface
*/
public function withoutCSP();
Analytics::cspNonce()
上下文:控制器、操作代码
返回为内容安全策略头生成的nonce。
/**
* returns the current Content Security Policy nonce
*
* @return string|null
*/
public function cspNonce();
Analytics::setOptimizeId()
/**
* set a custom optimize ID (the GTM-XXXXXX code)
*
* @param string $optimizeId
*
* @return AnalyticsProviderInterface
*/
public function setOptimizeId($optimizeId);