Estendere e personalizzare i dati del feed di esportazione dei dati SaaS
L’estensione Commerce Data Export consente di esportare dati dall’applicazione Commerce a servizi Commerce quali Live Search, Catalog Service e Product Recommendations. Se necessario, puoi estendere e personalizzare i dati del feed per includere dati di attributi aggiuntivi o modificare i dati raccolti.
Dopo aver aggiunto i dati degli attributi, è possibile accedervi dal campo attributes nello schema di GraphQL per i servizi storefront.
Estendere i dati degli attributi di sistema nel feed dei prodotti
Il feed dei prodotti include attributi di sistema predefiniti necessari per l’elaborazione del prodotto o comunemente utilizzati dai consumatori. Puoi includere attributi di sistema aggiuntivi nel feed dei prodotti aggiungendoli al feed.
Per completare l’attività, aggiornare il modulo magento/catalog-data-exporter per aggiungere gli attributi di sistema aggiuntivi al file di configurazione dependency injection (di.xml).
Aggiungere gli attributi alla query dell’attributo di prodotto (Magento\CatalogDataExporter\Model\Query\ProductAttributeQuery).
Esempio
<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>
Aggiungere attributi di prodotto ad Adobe Commerce
Gli sviluppatori possono aggiungere attributi di prodotto accessibili dal campo attributi di prodotto utilizzando uno dei metodi seguenti:
- Aggiungere l’attributo ad Adobe Commerce per l’inclusione nei dati del feed
productsesportati in Commerce Storefront Services. - Aggiungi l’attributo in modo dinamico durante il processo di sincronizzazione dei feed utilizzando un plug-in.
Aggiungi l’attributo ad Adobe Commerce
Puoi aggiungere un attributo di prodotto dall’amministratore di Commerce oppure a livello di programmazione utilizzando un modulo PHP personalizzato per definire l’attributo e aggiornare Adobe Commerce. L’aggiunta dell’attributo da Commerce Admin è il metodo più semplice, in quanto puoi aggiungere l’attributo e tutti i metadati richiesti contemporaneamente. Il nuovo attributo e le relative proprietà di metadati vengono esportati automaticamente nei servizi SaaS durante la successiva sincronizzazione pianificata.
Creare l’attributo del prodotto da Admin
-
Dall’amministratore di Commerce, creare l’attributo dalla pagina di configurazione dell’attributo del prodotto (Stores > Attributes > Product).
-
Aggiungere l’attributo a un set di attributi in base alle esigenze.
Consulta Creare gli attributi del prodotto nella Guida dell’amministratore di Adobe Commerce.
Creare l’attributo del prodotto a livello di programmazione
Aggiungere un attributo di prodotto a livello di programmazione creando una patch di dati che implementa DataPatchInterface e creare un’istanza della classe EavSetup Factory nel costruttore per configurare le opzioni dell’attributo.
Quando si definiscono le opzioni di attributo, tutti i parametri di attributo eccetto type, label e input sono facoltativi. Definite i seguenti parametri aggiuntivi ed eventuali altri che differiscono dalle impostazioni di default.
user_defined=1- Esporta l’attributo in servizi storefront durante la sincronizzazione dei datiused_in_product_listing=1—Rendi l’attributo accessibile nella query del database dell’elenco prodotti
Per informazioni sulla creazione di patch di dati, vedere Develop data and schema patches in PHP Developer Guide.
Aggiungere l’attributo di prodotto in modo dinamico
Per informazioni dettagliate sulla creazione dinamica di attributi di prodotto senza l’introduzione di nuovi attributi EAV, vedere Aggiungere dinamicamente attributi di prodotto.
Panoramica schema feed (et_schema.xml) feed-schema-overview
Ogni struttura di dati del feed è dichiarata in etc/et_schema.xml utilizzando un DSL XML semplice. Il framework legge questo file per determinare quali campi raccogliere e quali classi provider PHP chiamare.
<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>
Elementi chiave:
<record>- definisce l’entità feed<field>- dichiara un campo dati; l’attributoproviderpunta a una classe PHP che implementaDataProcessorInterfaceche recupera i datirepeated="true"- il campo è un array di oggetti<using>- parametri di input passati dal contesto del record padre al provider
et_schema.xml modifica solo ciò che Adobe Commerce raccoglie localmente. Anche il servizio SaaS ricevente deve essere aggiornato per accettare ed elaborare il nuovo campo prima che abbia effetto sulla vetrina.Osservare i dati dopo l’invio observe-data-after-submission
SaaS Data Export invia l’evento data_sent_outside dopo ogni invio batch riuscito a un servizio SaaS. Utilizza questo evento per la registrazione di controllo, i trigger del webhook o la raccolta di metriche.
Evento: data_sent_outside
Dati disponibili:
timestamptypeproducts, prices)dataOsservatore di esempio:
<?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
}
}
Registra l’osservatore in etc/events.xml:
<event name="data_sent_outside">
<observer name="my_module_data_sent_outside"
instance="My\Module\Observer\DataSentOutsideObserver" />
</event>
Per informazioni generali su eventi e osservatori, consulta Eventi e osservatori nella documentazione per sviluppatori di Adobe Commerce.
Filtrare i dati prima dell’invio
Utilizzare il punto di estensione Magento\SaaSCommon\Model\DataFilter per reimpostare i campi sensibili o ignorare entità specifiche prima che i dati vengano inviati al servizio SaaS. Questo è utile per i requisiti di conformità come GDPR o PCI, in cui alcuni campi non devono uscire dall’istanza di Commerce.
Implementare l’interfaccia e collegarla tramite una preferenza ID in etc/di.xml:
<preference for="Magento\SaaSCommon\Model\DataFilter"
type="My\Module\Model\MyDataFilter" />
PERSIST_EXPORTED_FEED=1 è impostato, la tabella di feed memorizza il payload non filtrato prima che venga applicato il filtro.