1. Чтобы не получить бан прочти правила магентоман! Читать обязательно!

Импорт и экспорт в Magento 2

Тема в разделе "Magento 2", создана пользователем Sylon, 21 май 2017.

XEvil 4.0 Релиз Состоялся!
?

Какие средства используете для импорта-экспорта в Magento 2?

  1. Стандартный импорт-экспорт Magento 2

    65,0%
  2. Magmi

    0 голосов
    0,0%
  3. Коммерческий модуль

    35,0%
Модераторы: Violent
  1. Sylon

    Sylon

    Регистр.:
    1 мар 2015
    Сообщения:
    324
    Симпатии:
    127
    Всем привет! Предлагаю в этой ветке делиться опытом и решением задач, связанных с импортом-экспортом в Magento 2.
     
  2. Sylon

    Sylon

    Регистр.:
    1 мар 2015
    Сообщения:
    324
    Симпатии:
    127
    Возникла проблема со стандартным импортом, полностью проходит проверку, импортирует без ошибок, но товары не появляются на фронтенде, крон откразывается работать после импорта.
    В админке висит сообщение о том, что нужно сделать реиндекс или включить крон.

    20 пользовательских атрибуты добавлял в колонку additional_attributes:
    Код:
    brend=Имя,strana=Китай,stil=,vysota=550,shirina=550,diametr=250,tip_=E14,tsvet_stola=Хром|Белый/Коричневый
    
    Фигурирует множественный выбор: Хром|Белый/Коричневый
    Прочитав скудную документацию скудную документацию и вопросы на гитхабе решения точного не было найдена по поводу:
    1 Знаки разделения в админке оба стоят по умолчанию ",". В файле CSV тоже, только данные с множественным выбором разделены "|".
    2 В админке Fields enclosure галочку не ставлю. (с ней вылазят ошибки) Информации о ней вообще не нашёл, для чего она нужна.
    3 Не ставил в колонке additional_attributes: has_options=0,required_options=0 (тоже ни одного упоминания понятного для чего они нужны) 0 - для простого продукта, 1 - для настраиваемого, резонный вопрос: это нужно для каждого атрибута в линии или вообще можно не ставить это?
     
    Последнее редактирование: 22 май 2017
  3. alex_me

    alex_me

    Регистр.:
    25 янв 2017
    Сообщения:
    165
    Симпатии:
    113
    Сначала лучше все же переиндексировать

    php magento indexer:reindex

    а потом починить cron, если проблема с ним
     
  4. Sylon

    Sylon

    Регистр.:
    1 мар 2015
    Сообщения:
    324
    Симпатии:
    127
    Реиндекс сейчас автоматический с двумя режимами: по расписанию (каждую минуту) и при обновлении и сохранении. То есть теперь нет необходимости делать его через консоль. В админке вы можете только выбрать более подходящий вариант.

    Все пользовательские атрибуты в Magento 2 помещаются не в отдельные слоты, а в один additional_attributes.

    Путём различных вариаций, так как нет вменяемой документации, определил корректные настройки для импорта:

    В админ-панели оставляем по умолчанию:
    Field separator - ,
    Multiple value separator - ,
    Fields enclosure - НЕ ставим галочку.
    Этот параметр только для пользовательских аттрибутов во вкладке additional_attributes. Он говорит, что каждое значение лежит в кавычках.

    Пример:

    custom_attribute_1="Стальной",custom_attribute_2="Круг"|"Квадрат"|"Эллипс"

    Но эта функция не нужна и ваша вкладка будет выглядеть так:

    custom_attribute_1=Стальной,custom_attribute_2=Круг|Квадрат|Эллипс

    Множественный выбор именно для additional_attributes разделяется трубой "|".
    Не смотря на то, что вы увидите в официальной документации разделение категорий тоже трубой, это неправильно сейчас! Только пользовательские атрибуты с множественным выбором во вкладке additional_attributes.

    Важный момент, все атрибуты во вкладке additional_attributes должны быть по алфавиту. Иначе крон и реиндекс не будет работать после импорта.

    Не должно быть пустых значений в additional_attributes (этот момент не точен).

    custom_attribute_1=,custom_attribute_2=Круг|Квадрат|Эллипс

    PS Стандартный импорт очень хорош тем, что проверяет и выявляет большинство косяков в CSV файле и покажет для какого продукта не найдены изображения.
     
    Последнее редактирование: 18 июн 2017
    denisromm нравится это.
  5. GataBon

    GataBon Писатель

    Регистр.:
    26 июн 2017
    Сообщения:
    2
    Симпатии:
    0
    Prevet vseme ja neruske nu chetajo po ruske nu not peshat neochen.
    Hi everyone I'm not Russian, I can read Russian but writing is problem for me.

    Eta tolka export paka nu sdelaju i import jesle kamu nebut enteresna.
    Eta tolko nacheal patom mozhete raseret.

    This is only export at the moment I will make import if anyone interested
    This is only starting point which you can expand.


    Mne nekagda neravewlos magento export/import dle etava ja vsegda delal scodam po bolshe vazmozhnaste tak
    I newer liked magento import/export for that reson I always make code to do so

    A pervich me sdelaiem nash malenke app shto bab patkliuchetsa v magento
    We will make small conection app to magento


    Dle etava nam nuzhno sdelat Novaju papku e php document
    For that we will need to make new folder with php file inside

    MagentoROOT/scripts/abstract.php


    Nutre php documente me palazhem etat script (mnoga abesnet nu jesle vaprosafr jes pazhalsta)
    Iside php file we eill paste this script ( alot to explain here but if you have any quastions please ask)

    Код:
    <?php
    use \Magento\Framework\AppInterface as AppInterface;
    use \Magento\Framework\App\Http as Http;
    
    use Magento\Framework\ObjectManager\ConfigLoaderInterface;
    use Magento\Framework\App\Request\Http as RequestHttp;
    use Magento\Framework\App\Response\Http as ResponseHttp;
    use Magento\Framework\Event;
    use Magento\Framework\Filesystem;
    use Magento\Framework\App\AreaList as AreaList;
    use Magento\Framework\App\State as State;
    
    abstract class AbstractApp implements AppInterface
    {
        public function __construct(
            \Magento\Framework\ObjectManagerInterface $objectManager,
            Event\Manager $eventManager,
            AreaList $areaList,
            RequestHttp $request,
            ResponseHttp $response,
            ConfigLoaderInterface $configLoader,
            State $state,
            Filesystem $filesystem,
            \Magento\Framework\Registry $registry
        ) {
            $this->_objectManager = $objectManager;
            $this->_eventManager = $eventManager;
            $this->_areaList = $areaList;
            $this->_request = $request;
            $this->_response = $response;
            $this->_configLoader = $configLoader;
            $this->_state = $state;
            $this->_filesystem = $filesystem;
            $this->registry = $registry;
        }
    
        public function launch()
        {
            $this->run();
            return $this->_response;
        }
    
        abstract public function run();
    
        public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
        {
            return false;
        }
    }
    
    ?>
    A teper nam nuzan file catori budet paselat vapros iz nash nowe document abstract.php ( mozhat bet zapros zakazos producta i neskalko eschio veshe) na etat ras tolka producta exporta
    Now we need other fille which will be requesting data from our abstract.php ( that can be used to request orders or products few things more to) for this time only products export


    Novi documnet buded v papke MagentoROOT/scripts/index.php
    New document will be made MagentoROOT/scripts/index.php


    Nutre php documente me palazhem etat script (mnoga abesnet nu jesle vaprosafr jes pazhalsta)
    Iside php file we eill paste this script ( alot to explain here but if you have any quastions please ask)


    Код:
    <?php
    require dirname(__FILE__) . '/../app/bootstrap.php';
    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
    require dirname(__FILE__) . '/abstract.php';
    
    class Getapp extends AbstractApp
    {
    
        public function run()
        {
            $this->_objectManager->get('Magento\Framework\Registry')->register('isSecureArea', true);
            $this->_state->setAreaCode('frontend');
    
    
            $_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
            $productCollection = $_objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
    
            $collection = $productCollection->create()
                    ->addAttributeToSelect('*')
                    ->load();
           
    
            $data= "Product ID, Product Name, Product Weight\n";
            $i =1;
    
            foreach ($collection as $product){
               
            //nam nuzhno sdelat array ez date  = making arry from data
               
                $data .= $product->getId().",";
                $data .= $product->getName().",".$product->getWeight().",".$product->getPrice();
                $data .="\n";
                        $i++;
    
    
            } 
    
               
                //a teper delaem csv iz date / Time to make csv with data
    
                header("Content-Type: application/csv");
                $csv_filename = 'data.xlsx';
                header("Content-Disposition:attachment;filename=".$csv_filename);
                $fd = fopen ($csv_filename, "w");
                fputs($fd,$data);
                fclose($fd);
                echo $data;
                die();
    
            }
    }
    
    /** @var \Magento\Framework\App\Http $app */
    $app = $bootstrap->createApplication('Getapp');
    $bootstrap->run($app);
    ?>
    Test prashol pered Magento ver. 2.1.7
    Test was done on Magento ver. 2.1.7
     
  6. alex_me

    alex_me

    Регистр.:
    25 янв 2017
    Сообщения:
    165
    Симпатии:
    113
    Why app ?
    Console command is just what you need for such task:
    https://www.thirdandgrove.com/create_magento_module_command_to_import_products

    Sample command template from Magento developers:
    https://github.com/magento/magento2-samples/tree/master/sample-module-command

    There is very cool solution to write custom import/export commands:
    Ready command line interface for import/export: https://github.com/firegento/FireGento_FastSimpleImport2_Demo
    Module that performs import/export: https://github.com/firegento/FireGento_FastSimpleImport2

    Just modify these two modules for your import/export
    For instance, I've modified them to import wordpress caterories/products/reviews/crosssell/upsell using native wordpress xml / cvs export format
     
  7. Kingr

    Kingr Постоялец

    Регистр.:
    5 май 2013
    Сообщения:
    86
    Симпатии:
    58
    Рад приветствовать в ответ! Переносил с OsComerce 7000 товаров на Magento 1 (с помощью Magmi), затем с Magento 1 перенес на Magento 2.1.7 (текущая). Пытался разобраться с Data Transfer Tool - не получилось, переносил штатным импортером с помощью CSV формата. Атрибутов у товаров было мало, поэтому было проще. Буду рад обсуждению всего, что связанно с Маджентой 2.
     
  8. NapoleON_OFF

    NapoleON_OFF Постоялец

    Регистр.:
    7 май 2009
    Сообщения:
    57
    Симпатии:
    67
    На Magento2, так же как и на Magento1,с импортом отлично справляется Magmi. Любые атрибуты, вариации, несколько фото, сопутка, рекомендуемые товары.....
     
    Kingr нравится это.
  9. FalconX

    FalconX Создатель

    Регистр.:
    2 янв 2017
    Сообщения:
    35
    Симпатии:
    58
    Magmi без проблем работает с Magento2 ??? Разработчик вроде только этим летом выпустил релиз для Magento2.
     
  10. webandr84

    webandr84 Создатель

    Регистр.:
    2 дек 2013
    Сообщения:
    22
    Симпатии:
    3
    А никто не делал импорт експорт через REST API? Нужно сделать интеграцию магазина с 1С, и вот подумал сделать это через API но пока даже не знаю в какую сторону копать