Speed optimizations:
-
msi, source items: import quantity and status together
-
stock items (qty, is_in_stock, ...) large speed gain by bundling queries per attribute code
Magento 2.3: Import of source items.
Pull request by Jeroen Nijhuis / Epartment
- Updated product-import.xsd to use correct element names for linked product types (related, cross-sell, up-sell)
- Adjusted samples to reflect changes
Updated integration test to import all example xml files.
I made the importer's behaviour for empty values more explicit in import.md, especially for empty select and multiselect attributes.
Fixed the fatal error that occurred when a select was set to null.
Pull request by Antonino Bonumore / Emergento
Existing option values are now only loaded per attribute, when it is needed. Newly created option values are given the sort order that matches their position.
The cache manager allows you to refresh any of product importer's caches.
Category info and option values are no longer reloaded from the database every batch. Newly created option values are given a fixed sort order of 10000.
Special case: if product A links to product B (for instance upsell), A and B in the same batch, and product B could not be created, the importer threw an exception up until now. I thought this could only occur in case of importer error, but apparently it also occurs when the input data is wrong. Therefore adding an error to product A suffices. Product A is still imported, but without the reference to the non-existing product B.
- By default, the importer does not delete images. Images are only added and updated.
If you want the importer to delete existing product images that are not present in the current import, use this
$config->imageStrategy = ImportConfig::IMAGE_STRATEGY_SET;
This will set images as they are named in the import. However, the importer will still not remove all images if none are added to a product. This is a safety precaution.
-
If the product type is unknown, you can ask the library for the Product, by giving the sku:
$product = $importer->getExistingProductBySku($sku);
or the id
$product = $importer->getExistingProductById($id);
The importer will return an object with the correct class, or false if no product with the id or sku could be found.
composer.json should not contain a version number
see getcomposer
Images with _[d]. (where [d] is a series of decimals) in the filename were duplicated on updates.
Added the option to remove category path url-rewrites.
If a shop does not use category paths in its urls, url_rewrite generation can be simplified a lot. This saves time and reduces the size of the url_rewrite table.
Based on the ideas from fisheyehq/module-url-rewrite-optimiser
Publication on Github, into the public domain.