SaaS データ書き出しフィードデータの拡張とカスタマイズ
Commerce Data Export拡張機能を使用すると、Commerce アプリケーションから、ライブサーチ、カタログサービス、商品レコメンデーションなどのCommerce サービスにデータを書き出すことができます。 必要であれば、フィードデータを拡張してカスタマイズし、属性データを追加したり、収集したデータを変更したりできます。
属性データを追加すると、ストアフロントサービスのGraphQL スキーマの属性フィールド からアクセスできるようになります。
製品フィードのシステム属性データの拡張
製品フィードには、製品処理に必要な、または消費者が一般的に使用するデフォルトのシステム属性が含まれています。 製品フィードに追加することで、製品フィードに追加のシステム属性を含めることができます。
このタスクを完了するには、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への商品属性の追加
開発者は、次のいずれかの方法を使用して、製品属性フィールド からアクセスできる製品属性を追加できます。
- Commerce ストアフロントサービスに書き出された
productsフィードデータに含める属性をAdobe Commerceに追加します。 - プラグインを使用して、フィード同期プロセス中に属性を動的に追加します。
Adobe Commerceへの属性の追加
Commerce Adminからproduct属性を追加するか、カスタム PHP モジュールを使用してプログラムで属性を定義し、Adobe Commerceを更新できます。 Commerce管理者から属性を追加すると、属性と必要なすべてのメタデータを一度に追加できるため、最も簡単な方法です。 新しい属性とそのメタデータプロパティは、次にスケジュールされた同期中に、自動的にSaaS サービスに書き出されます。
管理者から製品属性を作成します
-
Commerce管理者から、製品属性設定ページ(Stores > Attributes > Product)から属性を作成します。
-
必要に応じて、属性を属性セットに追加します。
Adobe Commerce管理ガイドの「製品属性を作成」を参照してください。
プログラムによる製品属性の作成
DataPatchInterfaceを実装するデータパッチを作成して、プログラムで製品属性を追加し、コンストラクター内のEavSetup Factory クラスのコピーをインスタンス化して、属性オプションを設定します。
属性オプションを定義する場合、type、labelおよびinputを除くすべての属性パラメーターはオプションです。 次の追加パラメーターと、デフォルト設定と異なるその他のパラメーターを定義します。
user_defined=1- データ同期中にストアフロントサービスに属性をエクスポートしますused_in_product_listing=1– 製品リスト データベース クエリ内で属性にアクセスできるようにします
データパッチの作成について詳しくは、PHP開発者ガイドの データおよびスキーマパッチの開発を参照してください。
product属性を動的に追加します
新しい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>– 親レコードコンテキストからプロバイダーに渡された入力パラメーター
et_schema.xmlに新しいフィールドを追加すると、Adobe Commerceがローカルで収集するもののみが変更されます。 また、受信するSaaS サービスも、ストアフロントに影響を与える前に、新しいフィールドを受け入れて処理するように更新する必要があります。送信後のデータの監視 observe-data-after-submission
SaaS Data Exportは、SaaS サービスにバッチ送信が成功するたびにdata_sent_outside イベントをディスパッチします。 このイベントは、監査ログ、Webhook トリガー、または指標の収集に使用します。
イベント: data_sent_outside
使用可能なデータ:
timestamptypeproducts、prices)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 Developer ドキュメントの イベントとオブザーバーを参照してください。
送信前にデータをフィルタリング
データがSaaS サービスに送信される前に、Magento\SaaSCommon\Model\DataFilter拡張ポイントを使用して、機密フィールドを墨消しするか、特定のエンティティをスキップします。 これは、GDPRやPCIなどのコンプライアンス要件で、特定のフィールドがCommerce インスタンスを離れてはならない場合に便利です。
インターフェイスを実装し、etc/di.xmlのDI環境設定を介してワイヤー接続します。
<preference for="Magento\SaaSCommon\Model\DataFilter"
type="My\Module\Model\MyDataFilter" />
PERSIST_EXPORTED_FEED=1が設定されている場合、フィード テーブルには、フィルタリングが実行される前に、フィルタリングされていないペイロードが格納されます。