In some cases, it'll be handsome, if it would be possible to import the images only, assuming the products are available. As M2IF comes as a framework, this is built-in for sure. So, you'll have to options to do that. The first option, and this what part 1 of the Best Practices are, is to use the default product import.

In that case, the structure of the CSV file is in general the same as for the product import, but you only the columns sku, store_view_code, attribute_set_code, product_type as well as the columns for the images, e. g. base_image.

E. g. if you'll use the add-update operation, reduce the observers to their minimum, like

{
  ...,
  "operations": [
    ...,
    {
      "name" : "add-update",
      "plugins" : [
        {
          "id": "import.plugin.global.data"
        },
        {
          "id": "import.plugin.subject",
          "subjects": [
            {
              "id": "import.subject.move.files",
              "identifier": "move-files",
              "file-resolver": {
                "prefix": "product-import"
              },
              "ok-file-needed": true
            },
            {
              "id": "import_product.subject.bunch",
              "identifier": "files",
              "file-resolver": {
                "prefix": "product-import"
              },
              "params" : [
                {
                  "copy-images" : true,
                  "clean-up-media-gallery" : true,
                  "clean-up-empty-columns" : [ 
                      "base_image", 
                      "small_image", 
                      "swatch_image", 
                      "thumbnail_image" 
                  ],
                  "media-directory" : "pub/media/catalog/product",
                  "images-file-directory" : "var/importexport/images"
                }
              ]
              "observers": [
                {
                  "import": [
                    "import.observer.attribute.set",
                    "import_product.observer.file.upload",
                    "import_product.observer.last.entity.id",
                    "import_product.observer.product.attribute.update",
                    "import_product_media.observer.product.media",
                    "import_product_media.observer.clear.media.gallery",
                    "import_product.observer.clean.up"
                  ]
                }
              ]
            },
            {
              "id": "import_product_media.subject.media",
              "identifier": "files",
              "file-resolver": {
                "prefix": "media"
              },
              "observers": [
                {
                  "import": [
                    "import.observer.attribute.set",
                    "import_product_media.observer.media.gallery.update",
                    "import_product_media.observer.media.gallery.value.update"
                  ]
                }
              ]
            }
          ]
        },
        {
          "id": "import.plugin.archive"
        }
      ]
    }
  ]
}

And save the configuration e. g. to var/importexport/techdivision-import.json.

For testing purposes, put your images in a folder (sufolders are needed), e. g. var/importexport/images of your Magento 2 Root Directory. Then download and install the PHAR, by moving it to the bin directory fo your Magento 2 installation, also make it executable with

chmod +x bin/import-cli-simple.phar

Then invoke the add-update operation with the following CLI command

bin/import-cli-simple.phar import:products \
  --configuration=var/importexport/etc/techdivision-import.json \
  --single-transaction=true \
  && bin/magento cache:flush \
  && bin/magento indexer:reindex

Don't forget to clear the cache and re-index after the import. Open the Frontend and Backend and check it everything where it should be.

This was the first part from our Best Practices how to import Images into your Magento 2 shop. Stay tuned for the second part comming soon!

Next Post Previous Post

Load Comments

Please note that by clicking "Load Comments", your browser will establish a connection with servers from Disqus.
For more information, please visit our privacy statement.