spatie/laravel4-googletagmanager

此包已被废弃,不再维护。作者建议使用 spatie/laravel-googletagmanager 包。

Laravel 4 的 Google Tag Manager 集成

1.0.0 2015-06-11 14:14 UTC

This package is auto-updated.

Last update: 2022-02-01 12:48:25 UTC


README

此包已被废弃

Google Tag Manager 集成于 Laravel

Latest Version on Packagist Software License Quality Score Total Downloads

为您的 Laravel 4 应用程序提供简单的 Google Tag Manager 实现。

Laravel 5 版本: spatie/laravel-googletagmanager

Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到所有开源项目的概述 在这里

Google Tag Manager

Google Tag Manager 允许您在不修改网站代码的情况下管理跟踪和营销优化,如 AdWords、Google Analytics 等。使用 Google Tag Manager 的一种方法是在页面加载后和自定义事件中通过 JavaScript 中的 dataLayer 变量发送数据。此包使管理数据层变得简单。

有关您想要通过数据层发送的具体示例,请参阅 Google Tag Manager 的 开发者指南

您还需要一个 Google Tag Manager ID,您可以通过 注册 并为您的网站创建一个账户来获取。

Postcardware

您可以使用此包(它是 MIT 许可),但如果它进入您的生产环境,您需要从您家乡寄给我们一张明信片,说明您正在使用我们的哪个包。

我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。

最好的明信片将被发布在我们的网站上开源页面。

安装

您可以通过 Composer 安装此包

$ composer require spatie/laravel4-googletagmanager

首先注册包的服务提供者和外观

// app/config/app.php (L4)

'providers' => [
  ...
  'Spatie\GoogleTagManager\GoogleTagManagerServiceProvider',
],

'aliases' => [
  ...
  'GoogleTagManager' => 'Spatie\GoogleTagManager\GoogleTagManagerFacade',
],

外观是可选的,但本指南的其余部分假设您正在使用外观。

接下来,发布配置文件

// L4
$ php artisan config:publish spatie/googletagmanager --path="vendor/spatie/laravel4-googletagmanager/resources/config"

可选地发布视图文件。除非必要,否则不建议这样做,以免在未来的包版本中使您的视图保持最新。

// L4
$ php artisan views:publish spatie/googletagmanager --path="vendor/spatie/laravel4-googletagmanager/resources/views"

配置

配置文件相当简单。

return [
    'id' => '',
    'enabled' => true,
];

在开发过程中,您不希望将数据发送到生产环境的标签管理器账户,这就是 enabled 的作用。

示例设置

return [
    'id' => 'GTM-XXXXXX',
    'enabled' => app()->environment() === 'production',
];

用法

基本示例

首先,您需要包含Google Tag Manager的脚本。谷歌文档建议在body标签之后立即执行此操作。

{{-- layout.blade.php --}}
<html>
  {{-- ... --}}
  <body>
    @include('googletagmanager::script')
    {{-- ... --}}
  </body>
</html>

您的base dataLayer也将在此处渲染。要添加数据,请使用set()函数。

// HomeController.php

public function index()
{
    GoogleTagManager::set('pageType', 'productDetail');

    return view('home');
}

这会渲染

<html>
  <!-- ... -->
  <body>
    <script>dataLayer = [{"pageType":"productDetail"}];</script>
    <script>/* Google Tag Manager's script */</script>
    <!-- ... -->
  </body>
</html>

其他简单方法

// Retrieve your Google Tag Manager id
$id = GoogleTagManager::id(); // GTM-XXXXXX

// Check whether script rendering is enabled
$enabled = GoogleTagManager::isEnabled(); // true|false

// Enable and disable script rendering
GoogleTagManager::enable();
GoogleTagManager::disable();

// Add data to the data layer (automatically renders right before the tag manager script). Setting new values merges them with the previous ones. Set als supports dot notation.
GoogleTagManager::set(['foo' => 'bar']);
GoogleTagManager::set('baz', ['ho' => 'dor']);
GoogleTagManager::set('baz.ho', 'doorrrrr');

// [
//   'foo' => 'bar',
//   'baz' => ['ho' => 'doorrrrr']
// ]

导出

GoogleTagManager还提供了一个dump()函数,可以在运行时将数组转换为json对象。这对于发送您希望在以后使用的视图中的数据非常有用。

<a data-gtm-product='{!! GoogleTagManager::dump($article->toArray()) !!}' data-gtm-click>Product</a>
$('[data-gtm-click]').on('click', function() {
    dataLayer.push({
        'event': 'productClick',
        'ecommerce': {
            'click': {
                'products': $(this).data('gtm-product')
            }
        }
        'eventCallback': function() {
            document.location = $(this).attr('href');
        }
    });
});

数据层

GoogleTagManager内部使用DataLayer类来存储和渲染数据。这个类可以在不使用包的其他部分的情况下用于一些自定义实现。DataLayer是一个带有点符号支持的改进数组,可以轻松渲染为json。

$dataLayer = new Spatie\GoogleTagManager\DataLayer();
$dataLayer->set('ecommerce.click.products', $products->toJson());
echo $dataLayer->toJson(); // {"ecommerce":{"click":{"products":"..."}}}

如果您想完全访问GoogleTagManager实例的数据层,请调用getDataLayer()函数。

$dataLayer = GoogleTagManager::getDataLayer();

可宏化

将标签添加到页面可能是一个重复的过程。由于此包不打算对您的标签的外观发表意见,因此GoogleTagManager是可宏化的。

GoogleTagManager::macro('impression', function ($product) {
    GoogleTagManager::set('ecommerce', [
        'currencyCode' => 'EUR',
        'detail' => [
            'products' => [ $product->getGoogleTagManagerData() ]
        ]
    ]);
});

GoogleTagManager::impression($product);

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。

鸣谢

关于Spatie

Spatie 是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到所有开源项目的概述 在这里

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件