geekyhouse / external-tracking-bundle
Symfony2 扩展包,用于管理外部跟踪脚本/像素跟踪器。
1.3.8
2015-11-17 14:57 UTC
Requires
- php: >=5.3.0
- sensio/framework-extra-bundle: >= 2.1
- symfony/assetic-bundle: >=2.3
- symfony/symfony: >=2.1,<3.0
- twig/extensions: >=1.0
Requires (Dev)
- phpunit/phpunit: >= 3.7
README
Symfony2 扩展包,用于管理外部跟踪脚本/像素跟踪器。
简介
此扩展包允许您管理合作伙伴的像素跟踪器/脚本跟踪器,而不会干扰用户导航。
- 可以从一个或多个类中管理跟踪器,并通过事件处理器添加。
- 跟踪器的显示可以推送到页面加载后,甚至可以与计时器一起使用。
- 不再依赖于任何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 测试中,如果您遇到任何问题,请告诉我们 :)