Productkenmerken programmatisch toevoegen aan de Data Exporter-feed
U kunt productkenmerken uitbreiden zonder ze in Adobe Commerce te registreren door een plug-in te maken om de kenmerken toe te voegen tijdens het proces voor gegevenssynchronisatie.
Productkenmerken toevoegen
Maak een plug-in die een customer_attribute
aan de klasse Magento\CatalogDataExporter\Model\Provider\Product\Attributes
toevoegt.
-
Werk het dossier van de de injectieconfiguratie van de gebiedsdeel(
di.xml
) bij om de stop te bepalen.code language-xml <type name="Magento\CatalogDataExporter\Model\Provider\Product\Attributes"> <plugin name="product_customer_attributes" type="Vendor\CatalogDataExporter\Model\Plugin\AddAttribute"/> </type>
-
Maak de insteekmodule.
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; } }
Nadat u de plug-in hebt toegevoegd, worden de wijzigingen tijdens de volgende geplande synchronisatie gesynchroniseerd met de verbonden winkelservices. Om de updates onmiddellijk te verzenden, gebruik het volgende CLI bevel om het synchronisatieproces manueel te beginnen.
code language-none bin/magento saas:resync --feed=products
Metagegevens van aangepaste productkenmerken declareren
Als u dynamisch een attribuut van het douaneproduct creeert en het voor vertoning, onderzoek, of het filtreren in de diensten van de opslagront wilt gebruiken, voeg de meta-gegevens van de productattributen toe om het storefront gedrag te vormen.
-
Werk het dossier van de de configuratieconfiguratie van de gebiedsdeelinjectie(
di.xml
) bij om de stop voor de meta-gegevens van het productattribuut te bepalen.code language-xml <type name="\Magento\CatalogDataExporter\Model\Provider\ProductMetadata"> <plugin name="product_customer_attributes_metadata" type="Vendor\CatalogDataExporter\Model\Plugin\AddAttributeMetadata"/> </type>
-
Maak de plug-in bij de volgende provider
\Magento\CatalogDataExporter\Model\Provider\ProductMetadata
.Schakel
ProductAttributeMetadata
invendor/magento/module-catalog-data-exporter/etc/et_schema.xml
voor vereiste velden.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; } }
Nadat u de plug-in hebt toegevoegd, worden de wijzigingen tijdens de volgende geplande synchronisatie gesynchroniseerd met de verbonden winkelservices. Om de updates onmiddellijk te verzenden, gebruik het volgende CLI bevel om het synchronisatieproces manueel te beginnen.
code language-none bin/magento saas:resync --feed=productattributes