擴充及自訂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
開發人員可以使用下列其中一種方法,新增可從產品屬性欄位存取的產品屬性:
- 將屬性新增至Adobe Commerce,以包含在匯出至Commerce店面服務的
products摘要資料中。 - 在摘要同步程式期間,使用外掛程式動態新增屬性。
將屬性新增至Adobe Commerce
您可以從「Commerce管理員」新增產品屬性,或以程式設計方式使用自訂PHP模組來定義屬性及更新Adobe Commerce。 從「Commerce管理員」新增屬性是最簡單的方法,因為您可以一次新增屬性和所有必要的中繼資料。 在下次排定的同步處理期間,新屬性及其中繼資料屬性會自動匯出至SaaS服務。
從管理員建立產品屬性
-
從Commerce Admin,從產品屬性設定頁面(Stores > Attributes > Product)建立屬性。
-
視需要新增屬性至屬性集。
請參閱 Adobe Commerce管理指南 中的建立產品屬性。
以程式設計方式建立產品屬性
建立實作DataPatchInterface的資料修補程式,以程式設計方式新增產品屬性,並在建構函式中具現化EavSetup Factory類別的復本,以設定屬性選項。
當您定義屬性選項時,除了type、label和input以外的所有屬性引數都是選用的。 定義下列其他引數以及與預設設定不同的其他任何引數。
user_defined=1— 在資料同步處理期間,將屬性匯出至storefront servicesused_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>— 從父記錄內容傳遞至提供者的輸入引數
et_schema.xml只會變更Adobe Commerce在本機收集的內容。 接收SaaS服務也必須更新,以接受和處理新欄位,才能對店面產生任何影響。提交後觀察資料 observe-data-after-submission
每次成功將批次提交至SaaS服務後,SaaS Data Export都會傳送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開發人員檔案中的活動和觀察者。
提交前篩選資料
使用Magento\SaaSCommon\Model\DataFilter延伸點來標籤敏感性欄位,或在將資料傳送至SaaS服務之前略過特定實體。 這對GDPR或PCI等法規遵循要求非常有用,因為某些欄位不得離開Commerce執行個體。
實作介面並透過etc/di.xml中的DI喜好設定連線:
<preference for="Magento\SaaSCommon\Model\DataFilter"
type="My\Module\Model\MyDataFilter" />
PERSIST_EXPORTED_FEED=1,則摘要表格會在進行篩選之前儲存未篩選的裝載。