setono/sylius-analytics-plugin

Sylius 的 Google Analytics 插件

支持包维护!
Setono

安装次数: 310,726

依赖关系: 0

建议者: 0

安全性: 0

星星: 23

关注者: 4

分支: 16

开放性问题: 0

类型:sylius-plugin

v4.0.0-beta.3 2024-09-23 06:27 UTC

README

Latest Version Software License Build Status

此插件为您的商店添加了 Google Analytics 跟踪功能。您可以选择使用 gtag 或标签管理器的集成。gtag 集成将在跟踪事件时输出传统的 gtag() 函数,而标签管理器集成将使用事件数据填充 dataLayer

安装

步骤 1:下载插件

此插件使用 TagBagBundle 向您的页面注入脚本。在安装此插件之前,请阅读并遵循该包的安装说明。

composer require setono/sylius-analytics-plugin:"^4.0@alpha"

注意:此插件的 v4 版本仍在 alpha 版本中,因此可能会发生破坏性更改。

步骤 2:启用插件

然后,通过将其添加到项目中的 config/bundles.php 文件中注册的插件/包列表中,在 SyliusGridBundle 之前启用插件。

<?php
$bundles = [
    Setono\SyliusAnalyticsPlugin\SetonoSyliusAnalyticsPlugin::class => ['all' => true],
    Sylius\Bundle\GridBundle\SyliusGridBundle::class => ['all' => true],
];

步骤 3:配置插件

# config/packages/setono_sylius_analytics.yaml
imports:
    - { resource: "@SetonoSyliusAnalyticsPlugin/Resources/config/app/config.yaml" }

setono_google_analytics:
    gtag: ~
    # If you want to use tag manager instead of gtag, just comment the line above and remove the comment below
    # tag_manager: ~

步骤 4:导入路由

# config/routes/setono_sylius_analytics.yaml
setono_sylius_analytics:
    resource: "@SetonoSyliusAnalyticsPlugin/Resources/config/routes.yaml"

步骤 5:更新您的数据库模式

php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

步骤 6:创建属性/容器

点击您的后端中的 Google Analytics 链接并创建一个新的属性/容器。

步骤 7:您已准备好!

您的 Sylius 商店现在开始跟踪。

可用的事件包括

  • add_payment_info
  • add_shipping_info
  • add_to_cart
  • begin_checkout
  • purchase
  • view_cart
  • view_item_list
  • view_item

并可以在 EventSubscriber 文件夹 中找到。

如果您想用更多数据丰富事件,请继续阅读。

用更多数据丰富事件

当我们想在 Sylius 应用程序中跟踪事件时,将触发 Setono\GoogleAnalyticsBundle\Event\ClientSideEvent

此事件包含实际的 Google Analytics 事件,例如 Setono\GoogleAnalyticsMeasurementProtocol\Request\Body\Event\PurchaseEvent。这样,如果您订阅了 ClientSideEvent,您可以在事件渲染(并发送到 Google)之前操纵事件的所有内容。

但还有其他更改数据丰富的方式。这可以通过解析器来完成。插件使用解析器从产品中解析品牌、从产品中解析类别等。继续阅读以了解如何使用此功能。

品牌解析器

一个项目有一个品牌属性(item_brand),但插件不知道您如何在应用程序中添加品牌数据。因此,您需要实现自己的 BrandResolver。以下是一个示例

<?php
use Setono\SyliusAnalyticsPlugin\Resolver\Brand\BrandResolverInterface;
use Sylius\Component\Core\Model\ProductInterface;
use Sylius\Component\Core\Model\ProductVariantInterface;

final class BrandResolver implements BrandResolverInterface
{
    public function resolveFromProduct(ProductInterface $product): ?string
    {
        return $product->getBrand(); // here we assume the getBrand() method will return a brand name or null (if not set)
    }

    public function resolveFromProductVariant(ProductVariantInterface $productVariant): ?string
    {
        return $this->resolveFromProduct($productVariant->getProduct());
    }
}

当您实现 BrandResolverInterface 并将您的类注册为服务时,它将自动标记为 setono_sylius_analytics.brand_resolver 并在跟踪时使用。

类别解析器

一个项目有类别属性(item_categoryitem_category2 等),默认情况下,插件将根据产品的主要分类或(如果没有设置主要分类)分类的集合中的第一个分类解析这些属性。

您可以在Setono\SyliusAnalyticsPlugin\Resolver\Category\CategoryResolver类中查看实现。

项目解析器

项目解析器的任务是返回一个Setono\GoogleAnalyticsMeasurementProtocol\Request\Body\Event\Item\Item对象,该对象可以从订单项或产品中获取。此解析器还提供了一个默认实现,您可以在Setono\SyliusAnalyticsPlugin\Resolver\Item\ItemResolver类中查看。

项目解析器

项目解析器必须返回一个项目数组,输入为订单。默认实现可以在Setono\SyliusAnalyticsPlugin\Resolver\Items\ItemsResolver类中找到。

变体解析器

项目具有一个变体属性(item_variant)。您如何在分析用户界面中查看变体数据由您自己决定,然而,该插件提供了两个默认解析器,即Setono\SyliusAnalyticsPlugin\Resolver\Variant\NameBasedVariantResolverSetono\SyliusAnalyticsPlugin\Resolver\Variant\OptionBasedVariantResolver

基于选项的版本具有最高的优先级,因此将被首先尝试。它尝试根据变体上的选项(如果有)创建一个变体字符串。

基于名称的版本返回\Sylius\Component\Product\Model\ProductVariantInterface::getName()

要实现自己的解析器,只需实现Setono\SyliusAnalyticsPlugin\Resolver\Variant\VariantResolverInterface。以下是一个示例

<?php
use Setono\SyliusAnalyticsPlugin\Resolver\Variant\VariantResolverInterface;
use Sylius\Component\Core\Model\ProductVariantInterface;

final class ProductNameBasedVariantResolver implements VariantResolverInterface
{
    public function resolve(ProductVariantInterface $productVariant): ?string
    {
        return $productVariant->getProduct()->getName();
    }
}

当您实现VariantResolverInterface并将您的类注册为服务时,它将自动标记为setono_sylius_analytics.variant_resolver并在跟踪时使用。请注意,两个现有的变体解析器将作为后备继续存在。

贡献

您可以贡献的方式

  • messagesvalidators翻译成您的母语
  • 创建新的事件订阅者以处理尚未实现的分析事件

谢谢!