Estender e personalizar dados do feed de exportação de dados SaaS
A extensão Commerce Data Export fornece uma maneira de exportar dados do aplicativo Commerce para os Serviços da Commerce, como o Live Search, o Serviço de Catálogo e as Recomendações de Produto. Se necessário, você pode estender e personalizar os dados do feed para incluir dados de atributo adicionais ou modificar os dados coletados.
Depois de adicionar dados de atributo, ele pode ser acessado no campo de atributos do esquema do GraphQL para serviços de vitrine.
Estender dados de atributos do sistema no feed de produtos
O feed de produtos inclui atributos de sistema padrão que são necessários para o processamento do produto ou que são usados com frequência pelos consumidores. Você pode incluir atributos de sistema adicionais no feed de produtos adicionando-os ao feed.
Para concluir esta tarefa, atualize o módulo magento/catalog-data-exporter para adicionar os atributos de sistema adicionais ao arquivo de configuração de injeção de dependência (di.xml).
Adicione os atributos à consulta de Atributo de Produto (Magento\CatalogDataExporter\Model\Query\ProductAttributeQuery).
Exemplo
<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>
Adicionar atributos do produto ao Adobe Commerce
Os desenvolvedores podem adicionar atributos de produto que podem ser acessados no campo de atributos de produto usando um dos seguintes métodos:
- Adicione o atributo ao Adobe Commerce para inclusão nos dados de feed
productsexportados para os serviços da loja da Commerce. - Adicione o atributo dinamicamente durante o processo de sincronização de feed usando um plug-in.
Adicionar o atributo ao Adobe Commerce
Você pode adicionar um atributo de produto do Commerce Admin ou programaticamente usando um módulo PHP personalizado para definir o atributo e atualizar o Adobe Commerce. Adicionar o atributo do administrador do Commerce é o método mais simples, pois você pode adicionar o atributo e todos os metadados necessários de uma só vez. O novo atributo e suas propriedades de metadados são exportados para os serviços SaaS automaticamente durante a próxima sincronização programada.
Criar o atributo de produto do Administrador
-
No Administrador do Commerce, crie o atributo na página de configuração de atributo do produto (Stores > Attributes > Product).
-
Adicione o atributo a um conjunto de atributos, conforme necessário.
Consulte Criar atributos de produto no Guia de Administração do Adobe Commerce.
Criar o atributo de produto de forma programática
Adicione um atributo de produto de forma programática criando um patch de dados que implemente o DataPatchInterface e instancie uma cópia da classe EavSetup Factory dentro do construtor para configurar as opções de atributo.
Quando você define as opções de atributo, todos os parâmetros de atributo exceto type, label e input são opcionais. Defina os seguintes parâmetros adicionais e outros que diferem das configurações padrão.
user_defined=1—Exporta o atributo para serviços de vitrine durante a sincronização de dadosused_in_product_listing=1— Tornar o atributo acessível na consulta do banco de dados da lista de produtos
Para obter informações sobre como criar patches de dados, consulte Desenvolver patches de dados e esquemas no Guia do Desenvolvedor do PHP.
Adicionar o atributo de produto dinamicamente
Para obter detalhes sobre como criar atributos de produto dinamicamente sem introduzir novos atributos EAV, consulte Adicionar atributos de produto dinamicamente.
Visão geral do esquema de feed (et_schema.xml) feed-schema-overview
Cada estrutura de dados de feed é declarada em etc/et_schema.xml usando um DSL XML simples. O framework lê este arquivo para determinar quais campos coletar e quais classes de provedor PHP chamar.
<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>
Principais elementos:
<record>- define a entidade de feed<field>- declara um campo de dados; o atributoprovideraponta para uma classe PHP implementandoDataProcessorInterfaceque busca os dadosrepeated="true"- o campo é uma matriz de objetos<using>- parâmetros de entrada passados do contexto de registro pai para o provedor
et_schema.xml altera apenas o que Adobe Commerce coleta localmente. O serviço SaaS de recebimento também deve ser atualizado para aceitar e processar o novo campo antes que ele tenha qualquer efeito na loja.Observar dados após o envio observe-data-after-submission
SaaS Data Export despacha o evento data_sent_outside após cada envio de lote bem-sucedido para um serviço SaaS. Use este evento para logs de auditoria, acionadores de webhook ou coleções de métricas.
Evento: data_sent_outside
Dados disponíveis:
timestamptypeproducts, prices)dataExemplo de observador:
<?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
}
}
Registrar o observador em etc/events.xml:
<event name="data_sent_outside">
<observer name="my_module_data_sent_outside"
instance="My\Module\Observer\DataSentOutsideObserver" />
</event>
Para obter informações gerais sobre eventos e observadores, consulte Eventos e observadores na Documentação do desenvolvedor do Adobe Commerce.
Filtrar dados antes de enviar
Use o ponto de extensão Magento\SaaSCommon\Model\DataFilter para redigir campos confidenciais ou ignorar entidades específicas antes que os dados sejam enviados ao serviço SaaS. Isso é útil para requisitos de conformidade, como GDPR ou PCI, em que determinados campos não devem sair da instância do Commerce.
Implemente a interface e conecte-a por meio de uma preferência ID em etc/di.xml:
<preference for="Magento\SaaSCommon\Model\DataFilter"
type="My\Module\Model\MyDataFilter" />
PERSIST_EXPORTED_FEED=1 estiver definido, a tabela de feed armazenará a carga não filtrada antes da filtragem.