Последние темы


CatalogFill импорт данных в migX

  • Здравствуйте, не могу понять как импортировать данные в migX.
    Есть каталог, в котором есть товар в виде "Документы", в нем созданы атрибуты через MigX. Вот так оно выглядит:
    https://prnt.sc/j2t9ao
    Добавление - https://prnt.sc/j2t9p4

    Типы полей migx следующие:
    https://prnt.sc/j2ta1t

    Мне нужно составить конфиг так, чтобы фотографии попадали в image поле migx (ссылка рода assets/images/123.jpg) и проставилось где "Обычное фото" - 1 (цифра)

    Сам конфиг:

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Артикул',array(10,'tv')),
        array('Наименование',array('pagetitle','content')),
        array('Краткое описание',array('introtext','content')),
        array('Подробное описание',array('content','content')),
        array('Цена',array(11,'tv')),
        //array('Кол-во на складе',array(5,'tv')),
        array('Картинка',array('image','content')),
        array('Без публикации', array('novar','content'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 12,
            'createdon' => strtotime("now"),
            'publishedon' => strtotime("now")
            //'pub_date' => strtotime("now")
            //'editedby' => 1
            //'editedon' => strtotime("now")
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 300;
    
    //разбивать по категориям
    $cf_config['include_categories'] = false;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $cf_config['delete_subcategories'] = true;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = 'pagetitle';
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = false;
    
    //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field)
    $cf_config['imp_if_not_exist'] = true;
    
    //удалять HTML-теги при экспорте
    $cf_config['exp_strip_tags'] = false;
    
    //автоматически генерировать псевдоним (alias) при импорте
    //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит.
    $cf_config['imp_autoalias'] = true;
    
    //Изменить значения поля для всех вложенных товаров до начала импорта.
    //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе.
    //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым)
    $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены
    
    //удалить файл после экспорта (скачивания)
    $cf_config['exp_delete_file'] = false;
    
    //кодировка CSV-файла при экспорте
    $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251'
    
    //Импортировать (обновлять) пустые значения
    $cf_config['imp_empty'] = true;
    
    //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import".
    $cf_config['imp_custom_processor'] = '';
    
    //путь (xpath) в XML структуре до товаров
    $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = <<<EOF
    <Good>
        <Kod>tv8</Kod>
        <Name>pagetitle</Name>
        <Options>
            <Stock>tv5</Stock>
            <Image>tv2</Image>
        </Options>
        <Prices>
            <RegularPrice>tv1</RegularPrice>
            <OldPrice>tv20</OldPrice>
        </Prices>
    </Good>
    EOF;
    
    //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок.
    $cf_config['imp_testmode'] = false;
    
    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        /*
        if(isset($output_arr['content']['pagetitle']))
            $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8');
        */
        return $output_arr;
    }
    
    
    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        //var_dump($value_arr,$output_arr);
        //exit;
        /*
        if(isset($output_arr['price']))
            $output_arr[1] = floatval($output_arr[1]) - 200;
        */
        return $output_arr;
    }
    
    ?>
    
    

    Помогите плз что нужно и куда писать

  • Посмотрите что получается на выходе поля, типом ввода которого является migx. Я думаю на выходе получается JSON строка. Она же должна быть в файле, который вы импортируете.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    Посмотрите что получается на выходе поля, типом ввода которого является migx. Я думаю на выходе получается JSON строка. Она же должен быть в файле, который вы импортируете.

    Да, json строка
    А как мне ее указать в xls и импортировать в migx с id 3? или по названию..

  • А как мне ее указать в xls и импортировать в migx с id 3? или по названию..

    Так же как значения любых других TV. Смотрите примеры.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    А как мне ее указать в xls и импортировать в migx с id 3? или по названию..

    Так же как значения любых других TV. Смотрите примеры.

    Взял конфиг default, прописал следующее:

    array('Артикул',array(10,'tv')),
        array('Наименование',array('pagetitle','content')),
        array('Цена',array(11,'tv')),
        array('Материал',array(7,'tv')),
        array('Вид нанесения',array(9,'tv')),
        array('Название',array('title','content')),
        array('Дополнительно',array(3,'tv'))
    

    в Дополнительно внес json код
    0_1523278456457_7606bca3-5b68-4c1b-b813-79f1a51bf877-image.png

    [{"MIGX_id":"1","title":"Цвет 1","image":"tovar-001.jpg","colorpref":"6","tovarticul":"345 345","deleted":"0","published":"1"},{"MIGX_id":"2","title":"Цвет 2","image":"tovar-002.jpg","colorpref":"5","deleted":"0","published":"1"},{"MIGX_id":"3","title":"Цвет 3","image":"tovar-003.jpg","colorpref":"4","deleted":"0","published":"1"},{"MIGX_id":"4","title":"","image":"1011667567.jpg","colorpref":"1","deleted":"0","published":"1"},{"MIGX_id":"5","title":"","image":"519694-700.jpg","colorpref":"4","deleted":"0","published":"1"}]
    

    Не сработало(

  • Что значит "не сработало"? Дайте файл, который импортируете и расскажите подробнее как импортируете.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    Что значит "не сработало"? Дайте файл, который импортируете и расскажите подробнее как импортируете.

    http://playstore.by/xls/ruchka.by_2.xlsx - вот файл с json, добавил в "Дополнительно"
    Как импортирую:
    https://prnt.sc/j2zxgw
    default конфиг:

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Артикул',array(10,'tv')),
        array('Наименование',array('pagetitle','content')),
        array('Цена',array(11,'tv')),
        array('Материал',array(7,'tv')),
        array('Вид нанесения',array(9,'tv')),
        array('Название',array('title','content')),
        array('Дополнительно',array(3,'tv'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 12,
            'createdon' => strtotime("now"),
            'publishedon' => strtotime("now")
            //'pub_date' => strtotime("now")
            //'editedby' => 1
            //'editedon' => strtotime("now")
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 300;
    
    //разбивать по категориям
    $cf_config['include_categories'] = false;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $cf_config['delete_subcategories'] = true;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = 'pagetitle';
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = false;
    
    //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field)
    $cf_config['imp_if_not_exist'] = true;
    
    //удалять HTML-теги при экспорте
    $cf_config['exp_strip_tags'] = false;
    
    //автоматически генерировать псевдоним (alias) при импорте
    //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит.
    $cf_config['imp_autoalias'] = true;
    
    //Изменить значения поля для всех вложенных товаров до начала импорта.
    //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе.
    //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым)
    $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены
    
    //удалить файл после экспорта (скачивания)
    $cf_config['exp_delete_file'] = false;
    
    //кодировка CSV-файла при экспорте
    $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251'
    
    //Импортировать (обновлять) пустые значения
    $cf_config['imp_empty'] = true;
    
    //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import".
    $cf_config['imp_custom_processor'] = '';
    
    //путь (xpath) в XML структуре до товаров
    $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = <<<EOF
    <Good>
        <Kod>tv8</Kod>
        <Name>pagetitle</Name>
        <Options>
            <Stock>tv5</Stock>
            <Image>tv2</Image>
        </Options>
        <Prices>
            <RegularPrice>tv1</RegularPrice>
            <OldPrice>tv20</OldPrice>
        </Prices>
    </Good>
    EOF;
    
    //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок.
    $cf_config['imp_testmode'] = false;
    
    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        /*
        if(isset($output_arr['content']['pagetitle']))
            $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8');
        */
        return $output_arr;
    }
    
    
    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        //var_dump($value_arr,$output_arr);
        //exit;
        /*
        if(isset($output_arr['price']))
            $output_arr[1] = floatval($output_arr[1]) - 200;
        */
        return $output_arr;
    }
    
    ?>
    

    у migx ID 3, но еще есть куча записей с id 3 (TV) к примеру img я думаю проблема в этом

  • Попробывал тоже самое сделать с migx_catalog (конфиг)

    <?php
    
    //Название класса таблицы товаров в БД
    $cf_config['className'] = 'tovvarmulti';
    //Название пакета таблицы товаров в БД
    $cf_config['packageName'] = 'tovvarmulti';
    //Название поля ID родителя
    $cf_config['parent_field'] = 'MIGX_id';
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Артикул',array(10,'tv')),
        array('Наименование',array('pagetitle','content')),
        array('Цена',array(11,'tv')),
        array('Материал',array(7,'tv')),
        array('Вид нанесения',array(9,'tv')),
        array('Дополнительно',array(3,'tv'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 12
            //'createdon' => strtotime("now")
            //'publishedon' => strtotime("now")
            //'pub_date' => strtotime("now")
            //'editedby' => 1
            //'editedon' => strtotime("now")
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 300;
    
    //разбивать по категориям
    $cf_config['include_categories'] = false;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $cf_config['delete_subcategories'] = true;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = 'pagetitle';
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = false;
    
    //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field)
    $cf_config['imp_if_not_exist'] = true;
    
    //удалять HTML-теги при экспорте
    $cf_config['exp_strip_tags'] = false;
    
    //автоматически генерировать псевдоним (alias) при импорте
    //false - выключено; true - генерировать с переводом в транслит; 'notranslit' - генерировать без перевода в транслит.
    $cf_config['imp_autoalias'] = true;
    
    //Изменить значения поля для всех вложенных товаров до начала импорта.
    //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе.
    //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым)
    $cf_config['imp_before_change'] = false;//'[{"tv.inventory":0},{}]';//'[{"published":0},{"tv.pricename":"Поставщик1"}]';//false - для отмены
    
    //удалить файл после экспорта (скачивания)
    $cf_config['exp_delete_file'] = false;
    
    //кодировка CSV-файла при экспорте
    $cf_config['exp_csv_charset'] = 'UTF-8'; //'windows-1251'
    
    //Импортировать (обновлять) пустые значения
    $cf_config['imp_empty'] = true;
    
    //Имя файла процессора, который использовать для импорта. Если пусто, используется стандартный процессор "import".
    $cf_config['imp_custom_processor'] = '';
    
    //путь (xpath) в XML структуре до товаров
    $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers';
    
    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = '';
    
    //тестирование конфигурации (без записи в БД). Отчёты -> Журнал ошибок.
    $cf_config['imp_testmode'] = false;
    
    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        /*
        if(isset($output_arr['content']['pagetitle']))
            $output_arr['content']['pagetitle'] = mb_strtoupper($output_arr['content']['pagetitle'], 'UTF-8');
        */
        
        return $output_arr;
    }
    
    
    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        //var_dump($value_arr,$output_arr);
        //exit;
        /*
        if(isset($output_arr['price']))
            $output_arr[1] = floatval($output_arr[1]) - 200;
        */
        return $output_arr;
    }
    
    
    ?>
    

    Тоже не добавляет(

  • На скриншоте не понятно что выбрано как родительский ресурс. Покажите ещё скриншот TV чтобы было видно их ID.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    На скриншоте не понятно что выбрано как родительский ресурс. Покажите ещё скриншот TV чтобы было видно их ID.

    Родительский ресурс (тип коллекция) - https://prnt.sc/j318bp

    TV migx :
    https://prnt.sc/j318ou - Сам блок
    Внутренности - https://prnt.sc/j31939

    Все доп. поля:
    https://prnt.sc/j31a1s
    Но с этим вроде все окей, проблема только загрузить таблицу чтобы вышло вот такое:
    https://prnt.sc/j31al1

  • Пока не понятно в чём конкретно проблема. Товары вообще не импортируются или импортируются, но не появляется таблица "Варианты товара"?

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    Пока не понятно в чём конкретно проблема. Товары вообще не импортируются или импортируются, но не появляется таблица "Варианты товара"?

    Импортируется все, кроме "варианты товара", в вариантах проставляется фото, вся загвостка только в фото которое работает через migx

  • https://prnt.sc/j318ou
    Что показано на этом скриншоте не понятно.

    https://prnt.sc/j31a1s
    Тут не вижу TV с ID 3.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    https://prnt.sc/j318ou
    Что показано на этом скриншоте не понятно.

    https://prnt.sc/j31a1s
    Тут не вижу TV с ID 3.

    На первом все доп. поля
    на 2-ом вот - https://prnt.sc/j38c46

  • https://prnt.sc/j38c46
    https://prnt.sc/j31939
    Какая связь между первым и вторым не понятно. Повторяю: Я не увидел TV в списке, у которого тип ввода migx и у которого ID = 3. Как называется этот TV?

  • У вас товары - это ресурсы MODX или созданы в таблице MIGXDB (не путать с MIGX)?

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    У вас товары - это ресурсы MODX или созданы в таблице MIGXDB (не путать с MIGX)?

    У меня товары - это ресурсы MODX,
    Вот - https://prnt.sc/j38fl2 тут тип ввода MIGX, и сюда заливаются фотографии, а когда редактируешь документ(товар) там есть таблица вида: https://prnt.sc/j38g71 которая как раз забита вот в этом MIGX

  • Тогда надо указать ID = 6

    array('Дополнительно',array(6,'tv'))
    

    А вообще после такого

    Попробывал тоже самое сделать с migx_catalog (конфиг)

    уже пора было отправлять в бан, т.к. у вас полная путаница в голове.

  • Участник @andchir написал в CatalogFill импорт данных в migX:

    Тогда надо указать ID = 6

    array('Дополнительно',array(6,'tv'))
    

    Это при конфиругации default верно?

  • Это при конфиругации default верно?

    Вы можете обозвать его как угодно, но у Вас он "default", наверно.

 

Последние комментарии

  • R

    @Andchir Спасибо. Получилось.

    Читать далее
  • Похоже, что в этой форме у вас используется FormIt. Но, как я уже писал выше, он там не нужен. Сначала нужно добавить товар в корзину, тогда и будет срабатывать плагин. Формы добавления товара в корзину я у вас не увидел. Далее можно сделать хитрость, добавить форму (можно на этой же странице), где будет кнопка "Подтвердить" и скрытые поля, которые будут заполнены данными из предыдущей формы.
    В общем пока я не увидел даже намека на то, что Вы понимаете что делаете, поэтому дальше я не помощник.

    Читать далее
  • K

    Уже разобрался, забыл указать тв в системных настройках tag_mgr2.numeric
    Спасибо спец. отделу. Канал открылся довольно быстро.

    Читать далее