mach / piwik-proxy-service-provider
Silex 的 PiwikProxy ServiceProvider
Requires
- silex/silex: ~2.0@dev
This package is not auto-updated.
Last update: 2024-09-14 13:42:25 UTC
README
PiwikProxyServiceProvider 允许您快速创建一个代理路由,用于 Piwik 跟踪,以隐藏 Piwik 服务器的位置。
要求
唯一的要求是将 file_get_contents
开启以启用 URL 获取。但您可以通过提供自己的 Mach\Silex\Piwik\RemoteContentInterface
实现来省略此要求,该接口用于执行对 Piwik 安装的调用。默认情况下它使用 file_get_contents
,但您也可以提供自己的版本,例如使用 cURL
。
安装
添加依赖: php composer.phar require mach/piwik-proxy-service-provider:~1.0
。
并更新它 php composer.phar update mach/piwik-proxy-service-provider
。
配置
以下是提供者的配置数组结构,以及每个键的描述。
{ "piwik.proxy.url": "<url-to-piwik-installation>", "piwik.proxy.token": "<token-with-admin-access-to-sites>", "piwik.proxy.timeout": "<timeout-in-seconds-for-request>", "piwik.proxy.cache": "<cache-in-seconds-for-js-file>" }
默认情况下,piwik.proxy.timeout
设置为 5
,piwik.proxy.cache
设置为 86400
,这为我们提供了每日缓存的 JavaScript 跟踪器请求。
用法
要使用提供者,您首先需要注册它并提供选项
<?php use Silex\Application; use Mach\Silex\Piwik\PiwikProxyServiceProvider; $app = new Application(); $app->register(new PiwikProxyServiceProvider(), array( 'piwik.proxy.url' => 'http://piwik.example.com', 'piwik.proxy.token' => 'xyz', ));
提供者将在 $app['piwik.proxy']
下注册一个闭包。闭包始终返回一个 Symfony\Component\HttpFoundation\Response
实例。
下一步是创建一个路由(例如 /tracker
),该路由将提供 JavaScript 文件并处理跟踪请求。
<?php $app->get('/tracker', function(Request $request) use ($app) { return $app['piwik.proxy']($request); });
要覆盖默认设置,您可以传递包含选项的数组作为闭包的第二个参数
<?php $app->get('/tracker/{id}', function(Request $request, $id) use ($app) { return $app['piwik.proxy']($request, array( 'url' => "https://piwik-$id.example.com" )); });
更改您的跟踪代码为
<!-- Piwik --> <script type="text/javascript"> var _paq = _paq || []; _paq.push(["setDocumentTitle", document.domain + "/" + document.title]); _paq.push(["setCookieDomain", "*.yourdomain.net"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { _paq.push(['setTrackerUrl', '/tracker']); _paq.push(['setSiteId', 1]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src='/tracker'; s.parentNode.insertBefore(g,s); })(); </script> <noscript><p><img src="/tracker?idsite=1" style="border:0;" alt="" /></p></noscript> <!-- End Piwik Code -->
许可协议
PiwikProxyServiceProvider 在 MIT 许可证下授权。