扩展和自定义SaaS数据导出馈送数据

Commerce Data Export扩展提供了一种将数据从Commerce应用程序导出到Commerce服务(如Live Search、目录服务和产品推荐)的方法。 如果需要,您可以扩展和自定义馈送数据,以包含其他属性数据或修改收集的数据。

添加属性数据后,可从GraphQL架构中的属性字段访问店面服务。

NOTE
添加或修改馈送数据可能会影响Commerce后端的性能和处理逻辑。 在合并到生产环境之前测试自定义的代码。 请使用API网格扩展目录服务GraphQL架构,而不是将数据添加到后端。 有关配置详细信息,请参阅目录服务和API网格

扩展产品信息源中的系统属性数据

产品信息源包括产品处理所需的或消费者常用的默认系统属性。 通过将其他系统属性添加到产品信息源,您可以在产品信息源中包含这些属性。

要完成此任务,请更新magento/catalog-data-exporter模块以将其他系统属性添加到依赖项注入配置文件 (di.xml)。

将属性添加到产品属性查询(Magento\CatalogDataExporter\Model\Query\ProductAttributeQuery)。

示例

    <type name="Magento\CatalogDataExporter\Model\Query\ProductAttributeQuery">
        <arguments>
            <argument name="systemAttributes" xsi:type="array">
                <item name="news_from_date" xsi:type="string">news_from_date</item>
                ...
                <item name="some_system_attribute_code">some_system_attribute_code</item>
            </argument>
        </arguments>
    </type>

将产品属性添加到Adobe Commerce

开发人员可以使用以下方法之一添加可从产品属性字段访问的产品属性:

  • 将属性添加到Adobe Commerce,以包含在导出到Commerce店面服务的products信息源数据中。
  • 在使用插件的馈送同步过程中动态添加属性。

将属性添加到Adobe Commerce

您可以通过Commerce管理员添加产品属性,或者使用自定义PHP模块以编程方式定义属性并更新Adobe Commerce。 从Commerce管理员中添加属性是最简单的方法,因为您可以同时添加属性和所有必需的元数据。 在下次计划同步期间,新属性及其元数据属性会自动导出到SaaS服务。

从管理员创建产品属性

  1. 在Commerce管理员中,从产品属性配置页面(Stores > Attributes > Product)创建属性。

  2. 根据需要将属性添加到属性集。

请参阅​ Adobe Commerce管理指南 ​中的创建产品属性

以编程方式创建产品属性

通过创建实现DataPatchInterface的数据修补程序以编程方式添加产品属性,并在构造函数中实例化EavSetup Factory类的副本以配置属性选项。

定义属性选项时,除typelabelinput之外的所有属性参数都是可选的。 定义以下附加参数以及与默认设置不同的任何其他参数。

  • user_defined=1 — 在数据同步期间将属性导出到storefront services
  • used_in_product_listing=1 — 使属性可在产品列表数据库查询中访问

有关创建数据修补程序的信息,请参阅​ PHP Developer Guide ​中的开发数据和架构修补程序

动态添加产品属性

有关在不引入新EAV属性的情况下动态创建产品属性的详细信息,请参阅动态添加产品属性

信息源架构概述(et_schema.xml) feed-schema-overview

每个馈送数据结构都使用简单的XML DSL在etc/et_schema.xml中声明。 框架读取此文件以确定要收集哪些字段以及要调用哪些PHP提供程序类。

<record name="Product">
  <field name="sku" type="ID" />
  <field name="name" type="String" />
  <field name="attributes" type="Attribute" repeated="true"
         provider="Magento\CatalogDataExporter\Model\Provider\Product\Attributes">
    <using field="productId" />
    <using field="storeViewCode" />
  </field>
</record>

关键元素:

  • <record> — 定义馈送实体
  • <field> — 声明一个数据字段;provider属性指向一个实现获取数据的DataProcessorInterface的PHP类
  • repeated="true" — 字段是对象数组
  • <using> — 输入参数从父记录上下文传递到提供程序
IMPORTANT
et_schema.xml添加新字段只会更改Adobe Commerce在本地收集的内容。 接收SaaS服务也必须更新为接受和处理新字段,然后才能对店面产生任何影响。

提交后观察数据 observe-data-after-submission

在每次成功向SaaS服务提交批次后,SaaS Data Export都会调度data_sent_outside事件。 使用此事件进行审核日志记录、webhook触发器或量度收集。

事件: data_sent_outside

可用数据:

描述
timestamp
提交的Unix时间戳
type
信息源名称(例如,productsprices
data
已提交的信息源有效负载

观察者示例:

<?php
namespace My\Module\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

class DataSentOutsideObserver implements ObserverInterface
{
    public function execute(Observer $observer): void
    {
        $feedName = $observer->getData('type');
        $timestamp = $observer->getData('timestamp');
        $data = $observer->getData('data');

        // Custom logic: audit logging, webhook, metrics
    }
}

etc/events.xml中注册观察者:

<event name="data_sent_outside">
    <observer name="my_module_data_sent_outside"
              instance="My\Module\Observer\DataSentOutsideObserver" />
</event>

有关活动和观察者的一般信息,请参阅Adobe Commerce开发人员文档中的活动和观察者

提交前筛选数据

使用Magento\SaaSCommon\Model\DataFilter扩展点标记敏感字段或跳过特定实体,然后再将数据发送到SaaS服务。 这对于合规性要求(例如GDPR或PCI)非常有用,因为此类要求中某些字段不得离开Commerce实例。

etc/di.xml中实施接口并通过DI首选项连接它:

<preference for="Magento\SaaSCommon\Model\DataFilter"
            type="My\Module\Model\MyDataFilter" />
NOTE
筛选在数据收集后应用。 如果设置了PERSIST_EXPORTED_FEED=1,则馈送表会在进行筛选之前存储未筛选的有效负载。
recommendation-more-help
commerce-help-data-export