mach/piwik-proxy-service-provider

Silex 的 PiwikProxy ServiceProvider

2.0.1 2015-08-22 00:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:42:25 UTC


README

Build Status

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 设置为 5piwik.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 许可证下授权。