marshmallow/google-analytics

向您的Google Analytics发送请求从未如此简单。支持电子商务跟踪。

v1.1.2 2021-04-07 10:43 UTC

README

alt text

Laravel Google Analytics包

Version Issues Licence PHP Syntax Checker

向您的Google Analytics发送请求从未如此简单。

安装

您可以通过composer安装此包

composer require marshmallow/google-analytics

使用方法

与事件监听器一起使用

使用此包最简单的方法是使用事件和监听器。例如,如果您想使用电子商务跟踪,您应该创建一个名为OrderCreated的事件。此事件应实现GoogleAnalyticsEvent。这将要求您实现withAnalytics方法。

namespace App\Events;

use Marshmallow\GoogleAnalytics\GoogleAnalytics;
use Marshmallow\GoogleAnalytics\Contracts\GoogleAnalyticsEvent;

class OrderCreated implements GoogleAnalyticsEvent
{
    //...
    
    public function withAnalytics(GoogleAnalytics $analytics): GoogleAnalytics
    {
        //
    }
}

withAnalytics方法

withAnalytics将为您提供一个GoogleAnalytics实例,您可以在其中添加希望发送到Google Analytics的Google Types。以下是一个示例。

class OrderCreated implements GoogleAnalyticsEvent
{
    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }
    
    public function withAnalytics(GoogleAnalytics $analytics): GoogleAnalytics
    {
        $ecommerce = (new EcommerceTracking)
                        ->id($this->order->id)
                        ->affiliation(env('APP_NAME'))
                        ->revenue($this->order->revenue())
                        ->shipping($this->order->shippingCost())
                        ->tax($this->order->tax())
                        ->currency('EUR');

        return $analytics->ecommerceTracking($ecommerce);
    }
}

注册监听器

GoogleEcommerceTrigger监听器添加到您的EventServiceProvider.php

OrderCreated::class => [
    GoogleEcommerceTrigger::class
]

连接类型

您可以添加任意多的类型。继续上面的例子,假设您想告诉Google Analytics哪些产品与这个订单一起销售。

class OrderCreated implements GoogleAnalyticsEvent
{
    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }
    
    public function withAnalytics(GoogleAnalytics $analytics): GoogleAnalytics
    {
        $analytics->ecommerceTracking($ecommerce);

        foreach ($this->order->products as $product) {

            $hitItem = (new ItemHit)
                        ->id($this->order->id)
                        ->name($product->name())
                        ->price($product->price())
                        ->quantity($product->quantity())
                        ->code($product->sku())
                        ->variation($product->category->name)
                        ->currency('EUR');

            $analytics->itemHit($hitItem);
        }
    }
}

Google事件类型

以下是我们目前支持的不同Google Types的概述以及如何使用它们。

事件

$pageview = (new Pageview)
            ->hostname('marshmallow.dev')
            ->page('/home')
            ->title('homepage');

$analytics->pageview($pageview);

事件

$event = (new Event)
            ->category('video')
            ->action('play')
            ->label('holiday')
            ->value(300);

$analytics->event($event);

电子商务跟踪

$ecommerce = (new EcommerceTracking)
                ->id(123456)
                ->affiliation('westernWear')
                ->revenue(50.00)
                ->shipping(32.00)
                ->tax(12.00)
                ->currency('EUR');

$analytics->ecommerceTracking($ecommerce);

电子商务商品(商品点击)

$item1 = (new ItemHit)
                ->id(12345)
                ->name('sofa')
                ->price(300)
                ->quantity(2)
                ->code('u3eqds43')
                ->variation('furniture')
                ->currency('EUR');

$analytics->itemHit($item1);

独立示例

如果您不想与事件和监听器一起使用,也可以独立使用。

$pageview = (new Pageview)
            ->hostname('marshmallow.dev')
            ->page('/home')
            ->title('homepage');

(new GoogleAnalytics())
        ->version(1)
        ->trackingId(env('SEO_GA'))
        ->anonymousClientId()
        ->pageview($pageview)

        /**
         * Call the sendToGoogle method at the end
         */
        sendToGoogle();

变更日志

有关最近更改的更多信息,请参阅变更日志

安全性

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

致谢

许可证

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