以程式設計方式將產品屬性新增至資料匯出工具摘要
您可以在資料同步過程中建立外掛程式來新增屬性,以擴充產品屬性而不需在Adobe Commerce中註冊它們。
NOTE
擴充產品屬性的最佳方式是將它們新增至Adobe Commerce,您可以在其中從Commerce管理員設定和管理這些屬性。 只有在您僅需要Commerce店面服務才能動態新增這些值,且不想在Adobe Commerce中註冊這些值時,才可動態新增。 您也可以選擇搭配目錄服務🔗使用API Mesh來管理自訂屬性,以擴充目錄服務GraphQL結構描述。
新增產品屬性
建立將customer_attribute
新增至Magento\CatalogDataExporter\Model\Provider\Product\Attributes
類別的外掛程式。
-
更新相依性插入組態檔 (
di.xml
)以定義外掛程式。code language-xml <type name="Magento\CatalogDataExporter\Model\Provider\Product\Attributes"> <plugin name="product_customer_attributes" type="Vendor\CatalogDataExporter\Model\Plugin\AddAttribute"/> </type>
-
建立外掛程式。
code language-php <?php declare(strict_types=1); namespace Vendor\CatalogDataExporter\Model\Plugin; use Magento\CatalogDataExporter\Model\Provider\Product\Attributes; class AddAttribute { /** * @param Attributes $subject * @param array $result * @param $arguments * @return array * @throws \Zend_Db_Statement_Exception */ public function afterGet(Attributes $subject, array $result, $arguments): array { $productIds = \array_column($arguments, 'productId'); foreach ($productIds as $productId) { $result[] = [ 'productId' => $productId, // "storeViewCode" must be specified for products where the customer attribute value should be set 'storeViewCode' => 'default', 'attributes' => [ // specify the customer attribute code 'attributeCode' => 'customer_attribute', // provide single or multiple values for the attribute 'value' => [ rand(41,43) ] ] ]; } return $result; } }
新增外掛程式後,在下次排定的同步處理期間,變更會同步處理至已連線的店面服務。 若要立即傳送更新,請使用下列CLI命令手動啟動同步化程式。
code language-none bin/magento saas:resync --feed=products
宣告自訂產品屬性中繼資料
如果您動態建立自訂產品屬性,並想要將其用於店面服務中的顯示、搜尋或篩選,請新增產品屬性中繼資料以設定店面行為。
-
更新相依性插入組態檔 (
di.xml
)以定義產品屬性中繼資料的外掛程式。code language-xml <type name="\Magento\CatalogDataExporter\Model\Provider\ProductMetadata"> <plugin name="product_customer_attributes_metadata" type="Vendor\CatalogDataExporter\Model\Plugin\AddAttributeMetadata"/> </type>
-
建立下列提供者
\Magento\CatalogDataExporter\Model\Provider\ProductMetadata
的外掛程式。檢查
vendor/magento/module-catalog-data-exporter/etc/et_schema.xml
中的ProductAttributeMetadata
以取得必要欄位。code language-php <?php declare(strict_types=1); namespace Vendor\CatalogDataExporter\Model\Plugin; use Magento\CatalogDataExporter\Model\Provider\ProductMetadata; class AddAttributeMetadata { /** * @param ProductMetadata $subject * @param array $result * @param $arguments * @return array * @throws \Zend_Db_Statement_Exception */ public function afterGet(ProductMetadata $subject, array $result, $arguments): array { $result[] = [ 'id' => '123', 'storeCode' => 'default', 'websiteCode' => 'base', 'storeViewCode' => 'default', // specify the customer attribute code - should be the same as used in the products attributes plugin 'attributeCode' => 'customer_attribute', // only product attributes are supported 'attributeType' => 'catalog_product', // specify the data type 'dataType' => 'int', 'multi' => false, 'label' => 'Customer Attribute', 'frontendInput' => 'select', 'required' => false, 'unique' => false, 'global' => true, 'visible' => true, 'searchable' => true, 'filterable' => true, // This value must be set to true to export it to the storefront services 'visibleInCompareList' => true, 'visibleInListing' => true, 'sortable' => true, 'visibleInSearch' => true, 'filterableInSearch' => true, 'searchWeight' => 1.0, 'usedForRules' => true, 'boolean' => false, 'systemAttribute' => false, 'numeric' => false, // specify the list of attribute options 'attributeOptions' => [ 'option1', 'option2', 'option3' ] ]; return $result; } }
新增外掛程式後,在下次排定的同步處理期間,變更會同步處理至已連線的店面服務。 若要立即傳送更新,請使用下列CLI命令手動啟動同步化程式。
code language-none bin/magento saas:resync --feed=productattributes
recommendation-more-help
6183eb5c-cb5c-49fa-bd7b-cd38576b727c