dvsa/mot-google-analytics

一个用于轻松集成 Google Analytics 和 Google Tag Manager 的 Laminas 模块

v3.0.0 2024-07-08 11:05 UTC

README

一个用于轻松集成 Google Analytics 和 Google Tag Manager 的 Laminas 模块。

Google Tag Manager 和数据层

Google Tag Manager 是由 Google 创建的一个标签管理系统,用于管理网站(包括电子营销标签的变体,有时称为跟踪像素或网络信标)上用于跟踪和统计的 JavaScript 和 HTML 标签。

-- 来自 https://en.wikipedia.org/wiki/Google_Tag_Manager

数据层 是一个包含您想要传递给 Google Tag Manager 的所有信息的对象。可以通过数据层将事件或变量传递给 Google Tag Manager,并在 Google Tag Manager 中根据变量的值(例如,当 purchase_total > $100 时触发重营销标签)或基于特定事件设置触发器。变量的值也可以传递到其他标签(例如,将 purchase_total 传递到标签的值字段)。

-- 来自 https://developers.google.com/tag-manager/devguide

要设置数据层,必须将以下代码片段添加到页面头部(或容器代码片段之上的其他位置)

<script>
  dataLayer = [];
</script>

上述代码片段是一个空对象,可以填充信息以传递给 Google Tag Manager。您可以在 使用 部分中查看如何向数据层对象添加属性。

<script>
  dataLayer = [{
    'userId': '5a713869ade8c3665c7e88c01e81a3f220cfde7d',
    'event': 'removed-defect',
    'journey': 'RFRs',
    'title': 'Test result entry - the defect has been removed'
}];
</script>

要求

安装

通过 Composer 安装包

$ composer require dvsa/mot-google-analytics

然后通过将其添加到 application.config.php 中来启用 GoogleAnalyticsModule 模块。

<?php

'modules' => [
    'Dvsa\Mot\Frontend\GoogleAnalyticsModule',
],

使用

在控制器中

<?php

namespace MyModule\Controller;

use Dvsa\Mot\Frontend\GoogleAnalyticsModule\Package;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $view = new ViewModel([]);
        $view->setTemplate('my-module/index');

        $this->gtmDataLayer([
          'event'   => 'removed-defect',
          'journey' => 'RFRs',
          'title'   => 'Test result entry - the defect has been removed',
        ]);

        return $view;
    }
}

在视图中

<html>
  <head>
    <script type="text/javascript"><?php
       // Add variables and render the script all at once.
      echo $this->gtmDataLayer(['userId' => '5a713869ade8c366'])->render();
    ?></script>
  </head>
  <body></body>
</html>

或者

<?php
// Append variables
$this->gtmDataLayer(['userId' => '5a713869ade8c366']);
?>
<html>
  <head>
    <script type="text/javascript"><?php
      // and now render the script.
      echo $this->gtmDataLayer()->render();
    ?></script>
  </head>
  <body></body>
</html>

在服务中

<?php

namespace MyModule\Service;

use Dvsa\Mot\Frontend\GoogleAnalyticsModule\TagManager\DataLayer;

class MyService
{
    /**
     * @var DataLayer
     */
    private $dataLayer;

    /**
     * To inject the $dataLayer object retrieve the `DataLayer::class` service from the main service container.
     *
     * @param $dataLayer DataLayer
     */
    public function __construct(DataLayer $dataLayer)
    {
        $this->dataLayer = $dataLayer;
        $this->dataLayer->add([
          'event'   => 'removed-defect',
          'journey' => 'RFRs',
          'title'   => 'Test result entry - the defect has been removed',
        ]);
    }
}

开发和执行测试

下载仓库并安装所有依赖项

$ git clone git@gitlab.motdev.org.uk:mot/mot-google-analytics.git
$ composer install

要执行单元和功能测试,请执行以下操作

$ composer test

要生成代码覆盖率

$ composer test-coverage

HTML 文件将保存到 build/code-coverage/html/,Clover XML 保存到 build/code-coverage/clover/

如果您想以调试目的启动应用程序,请执行 test/bin/start-app.sh。应用程序将在 http://127.0.0.1:8080/ 上可用。

贡献

请参阅我们的 贡献指南