geekyhouse/external-tracking-bundle

Symfony2 扩展包,用于管理外部跟踪脚本/像素跟踪器。

1.3.8 2015-11-17 14:57 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:31:03 UTC


README

Symfony2 扩展包,用于管理外部跟踪脚本/像素跟踪器。

Build Status Latest Stable Version Total Downloads Latest Unstable Version License Dependency Status

knpbundles.com

简介

此扩展包允许您管理合作伙伴的像素跟踪器/脚本跟踪器,而不会干扰用户导航。

  • 可以从一个或多个类中管理跟踪器,并通过事件处理器添加。
  • 跟踪器的显示可以推送到页面加载后,甚至可以与计时器一起使用。
  • 不再依赖于任何JavaScript框架 ;)

安装

Composer

将以下内容添加到项目的 composer.json 文件的 require 部分

...
    {
        "geekyhouse/external-tracking-bundle": "dev-master"
    }
...

运行命令: php composer.phar install

将此扩展包添加到应用程序的内核中

//app/AppKernel.php
public function registerBundles()
{
    return array(
         // ...
        new GeekyHouse\ExternalTrackingBundle\ExternalTrackingBundle(),
        // ...
    );
}

在您的 YAML 配置中配置服务

您可以重写扩展包类。默认值

# app/config/config.yml
external_tracking:
	manager_class: GeekyHouse\ExternalTrackingBundle\Service\ExternalTrackingManager
	request_listener_class: GeekyHouse\ExternalTrackingBundle\EventListener\RequestListener
	extension_class: GeekyHouse\ExternalTrackingBundle\Twig\Extension\ExternalTrackingExtension

自定义事件监听器

此扩展包提供了2个事件分发器,您可以使用它们

  • geekyhouse.event.before_get_trackers : 当调用 "getTrackers" 时首先调用
  • geekyhouse.event.after_get_trackers : 当调用 "getTrackers" 时即将返回时调用

您可以轻松创建一个自定义服务,在写入跟踪器之前添加数据,如下所示

# app/config/config.yml
services:
    my.custom.listener:
        class: My\Bundle\EventListener\CustomListener
        tags:
            - { name: kernel.event_listener, event: geekyhouse.event.before_get_trackers, method: beforeGetTrackers }
            - { name: kernel.event_listener, event: geekyhouse.event.after_get_trackers, method: afterGetTrackers }
        arguments: [@service_container]
// My/Bundle/EventListener/CustomListener.php
namespace My\Bundle\EventListener;

use GeekyHouse\ExternalTrackingBundle\Event\ExternalTrackingEvent;

class CustomListener
{

    private $container;

    public function __construct($container)
    {
        $this->container = $container;
    }

    public function beforeGetTrackers(ExternalTrackingEvent $event)
    {
        $UserManager = $this->container->get('my.user.manager');
        $this->ExternalTrackingManager->pushData(
            array(
                'user' => $UserManager->getCurrentUser()
            )
        );
    }

    public function afterGetTrackers(ExternalTrackingEvent $event)
    {
    }

}

在这个例子中,我们只是系统地在外部跟踪管理器上添加自定义用户数据。

Twig 扩展

默认提供 Twig 扩展: GeekyHouse\ExternalTrackingBundle\Twig\Extension

它提供了 get_external_trackers 函数,该函数在页面上写入您的跟踪器。

此函数接受两个参数

  • onDocumentReady (默认 TRUE) 如果为 TRUE,则在写入跟踪器之前等待 DOM 加载。
  • timer (默认 500) 在写入跟踪器之前(如果为 TRUE,则为 DOM 加载之后)等待的毫秒数。

在 Twig 模板中使用此函数,如下所示

# base.html.twig
[...]
    {{ get_external_trackers(true, 500)|raw }}
[...]

别忘了使用 |raw,否则 Twig 会转义 JavaScript 标签。

建议将此行 在页面末尾 写入。

此扩展包含一个私有方法 cleanJavascriptString,其目的是将 PHP 字符串转换为可评估的 JavaScript 字符串。此方法目前正在 beta 测试中,如果您遇到任何问题,请告诉我们 :)