Erweitern und Anpassen von SaaS-Datenexport-Feed-Daten
Die Commerce Data Export bietet eine Möglichkeit, Daten aus der Commerce-Anwendung in Commerce-Services wie Live Search, Catalog Service und Product Recommendations zu exportieren. Bei Bedarf können Sie die Feed-Daten erweitern und anpassen, um zusätzliche Attributdaten einzuschließen, oder die erfassten Daten ändern.
Nachdem Sie Attributdaten hinzugefügt haben, können Sie über das Feld Attribute im GraphQL-Schema für Storefront-Services darauf zugreifen.
Erweitern von Systemattributdaten im Produkt-Feed
Der Produkt-Feed enthält standardmäßige Systemattribute, die für die Produktverarbeitung erforderlich sind oder von Verbrauchern häufig verwendet werden. Sie können zusätzliche Systemattribute in den Produkt-Feed aufnehmen, indem Sie sie zum Feed hinzufügen.
Um diese Aufgabe abzuschließen, aktualisieren Sie das Modul magento/catalog-data-exporter , um die zusätzlichen Systemattribute zur Konfigurationsdatei Dependency Injection“ hinzuzufügen di.xml).
Fügen Sie die Attribute der Magento\CatalogDataExporter\Model\Query\ProductAttributeQuery Produktattributabfrage hinzu.
Beispiel
<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>
Hinzufügen von Produktattributen zu Adobe Commerce
Entwicklerinnen und Entwickler können Produktattribute hinzufügen, auf die über das Feld Produktattribute zugegriffen werden kann, indem sie eine der folgenden Methoden verwenden:
- Fügen Sie das -Attribut zu Adobe Commerce hinzu, um es in die
products-Feed-Daten aufzunehmen, die an Commerce-Storefront-Services exportiert wurden. - Dynamisches Hinzufügen des Attributs während des Feed-Synchronisierungsprozesses mithilfe eines Plug-ins.
Hinzufügen des Attributs zu Adobe Commerce
Sie können ein Produktattribut aus Commerce Admin hinzufügen oder programmgesteuert ein benutzerdefiniertes PHP-Modul verwenden, um das Attribut zu definieren und Adobe Commerce zu aktualisieren. Das Hinzufügen des Attributs über die Commerce Admin ist die einfachste Methode, da Sie das Attribut und alle erforderlichen Metadaten gleichzeitig hinzufügen können. Das neue Attribut und seine Metadateneigenschaften werden bei der nächsten geplanten Synchronisierung automatisch in die SaaS-Services exportiert.
Erstellen des Produktattributs über den Administrator
-
Erstellen Sie das Attribut über die Commerce-Admin auf der Seite „Produktattribut-Konfiguration“ (Stores > Attributes > Product).
-
Fügen Sie das -Attribut einem nach Bedarf festgelegten Attributsatz hinzu.
Siehe Erstellen von Produktattributen im Adobe Commerce-Administratorhandbuch.
Programmgesteuertes Erstellen des Produktattributs
Fügen Sie ein Produktattribut programmgesteuert hinzu, indem Sie einen Daten-Patch erstellen, der die DataPatchInterface implementiert, und instanziieren Sie eine Kopie der EavSetup Factory-Klasse im Konstruktor, um die Attributoptionen zu konfigurieren.
Wenn Sie die Attributoptionen definieren, sind alle Attributparameter außer type, label und input optional. Definieren Sie die folgenden zusätzlichen Parameter und alle anderen, die sich von den Standardeinstellungen unterscheiden.
user_defined=1- Exportiert das Attribut während der Datensynchronisation in die Storefront-Servicesused_in_product_listing=1- Gewährleisten Sie den Zugriff auf das Attribut in der Datenbankabfrage der Produktliste.
Informationen zum Erstellen von Daten-Patches finden Sie Daten- und Schema-Patches entwickeln im PHP-Entwicklerhandbuch.
Dynamisches Hinzufügen des Produktattributs
Weitere Informationen zum dynamischen Erstellen von Produktattributen ohne Einführung neuer EAV-Attribute finden Sie Produktattribute dynamisch hinzufügen.
Übersicht über das Feed-Schema (et_schema.xml) feed-schema-overview
Jede Feed-Datenstruktur wird in etc/et_schema.xml mit einer einfachen XML-DSL deklariert. Das Framework liest diese Datei, um zu bestimmen, welche Felder gesammelt werden sollen und welche PHP-Provider-Klassen aufgerufen werden sollen.
<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>
Schlüsselelemente:
<record>- Definiert die Feed-Entität<field>- Deklariert ein Datenfeld; dasprovider-Attribut verweist auf eine PHP-Klasse, dieDataProcessorInterfaceimplementiert, die die Daten abruftrepeated="true": Das Feld ist ein Array von Objekten<using>- Eingabeparameter, die vom übergeordneten Datensatzkontext an den Anbieter übergeben werden
et_schema.xml wird nur das geändert, was Adobe Commerce lokal erfasst. Der empfangende SaaS-Service muss ebenfalls aktualisiert werden, um das neue Feld zu akzeptieren und zu verarbeiten, bevor es Auswirkungen auf die Storefront hat.Beobachten von Daten nach der Übermittlung observe-data-after-submission
SaaS Data Export sendet das data_sent_outside nach jeder erfolgreichen Batch-Übermittlung an einen SaaS-Service. Verwenden Sie dieses Ereignis für Auditprotokollierung, Webhook-Trigger oder die Erfassung von Metriken.
event: data_sent_outside
Verfügbare Daten:
timestamptypeproducts, prices)dataBeispiel: Beobachter:
<?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
}
}
Registrieren Sie den Beobachter in etc/events.xml:
<event name="data_sent_outside">
<observer name="my_module_data_sent_outside"
instance="My\Module\Observer\DataSentOutsideObserver" />
</event>
Allgemeine Informationen zu Ereignissen und Beobachtern finden Sie unter Ereignisse und Beobachter in der Adobe Commerce Developer-Dokumentation.
Daten vor der Übermittlung filtern
Verwenden Sie den Magento\SaaSCommon\Model\DataFilter Erweiterungspunkt, um sensible Felder zu redigieren oder bestimmte Entitäten zu überspringen, bevor Daten an den SaaS-Service gesendet werden. Dies ist nützlich für Compliance-Anforderungen wie die DSGVO oder PCI, bei denen bestimmte Felder die Commerce-Instanz nicht verlassen dürfen.
Implementieren Sie die -Schnittstelle und vernetzen Sie sie über eine ID-Voreinstellung in etc/di.xml:
<preference for="Magento\SaaSCommon\Model\DataFilter"
type="My\Module\Model\MyDataFilter" />
PERSIST_EXPORTED_FEED=1 festgelegt ist, speichert die Feed-Tabelle die ungefilterte Payload, bevor die Filterung erfolgt.