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


Импорт с сохранением структуры вложенности catalogFill

  • Добрый день!

    Нужно перенести со строго сайта на новый.

    На старом сайте, очень сложная структура, как мне правильно выгрузить, загрузить?

    Структура на старом сайте

    • категория
      -- подкатегория
      --- подкатегрия
      ---- подкатегория
      ----- товар
      --- подкатегория
      ---- подкатегория
      ----- товар

    Не знаю на что опираться, на id родителя не пойдет, ибо при выгрузке выгружается его ID, но на новом сайта этого ID не будет и там они пойдут в своем порядке!

    Прошу помощи, спасибо!

  • У категорий, подкатегорий и товаров разные шаблоны? Если так, то в чём конкретно проблема?

  • Проблема в том, что я не знаю как сохранить вложенность!? т.е. что бы у этой категории были эти подкатегории, а у этих подкатегорий были именно эти товары?

  • Да, такое можно сделать. У вас может быть хоть 100 под категорий.
    Опираться вам нужно здесь на конфигурационный файл php. через него вы задаёте логику.
    И понимание что должно являться категорией и под категорией для Экспорта и Импорта ресурсов.

    P.S - сам с таким сталкивался. Надо просто немного посидеть и по экспериментировать, как станет все понятно вы сделаете свой конфиг который сделает такой уровень вложенности категорий и под категорий как вы привели примером выше .

  • Смотрите конфигурационный файл "with_categories.php", там по умолчанию два уровня категорий, но вы можете их добавить сколько угодно по такому же принципу.

  • Подскажите пожалуйста.
    У меня три уровня вложенности, первый уровень он создает по два ресурса, в чем может быть проблема?

    Конфиг:

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Раздел',array(5,'category')),
        array('Категория',array(5,'category')),
        array('Подкатегория',array(2,'category')),
        array('Наименование',array('pagetitle','content')),
        array('Заголовок браузера',array('1','tv')),
        array('H1',array('2','tv')),
        array('Мета-описание',array('3','tv')),
        array('Ключеве слова',array('4','tv')),
        array('Картинка',array(6,'tv')),
        array('Ссылка',array('alias','content')),
        array('Включен',array('published','content')),
        array('ID шаблона',array('template','content')),
        array('Тип ресурса',array('class_key','content'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'isfolder' => 1
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 100;
    
    //разбивать по категориям
    $cf_config['include_categories'] = true;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $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'] = false;
    
    //Изменить значения поля для всех вложенных товаров до начала импорта.
    //Например можно отменить публикацию для всех товаров и публиковать только те, которые есть в новом прайс-листе.
    //первый массив - какие поля и на какие значения менять, второй массив - условия которые нужно проверять (можно сделать пустым)
    $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'] = '';
    
    //тестирование конфигурации (без записи в БД)
    $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;
    }
    

    Структура файла выгрузки: http://joxi.ru/bmoLjz4TxqboD2

    Буду очень благодарен!

  • в файле выгрузки поменял категории местами, ситуация улучшилась, остались по мелочи, там руками поправил. В чем была ошибка, так и не понял!

  • На сколько я понял, у вас в выгрузке категории перемешаны с товарами. В колонке "Наименование" должны быть только товары, а не категории. Лучше сначала делать отдельную выгрузку для категорий в отдельном файле.

  • Нет, в файле указывал только категории.
    Для правильной выгрузки товаров, тоже нужно указывать?

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('Раздел',array(5,'category')),
        array('Категория',array(5,'category')),
        array('Подкатегория',array(2,'category')),
        array('Товар',array(3,'category')), // - добавил товар сюда
    

    Вопрос если в некоторых разделах, структура будет меньше, к примеру не как изначально указал, в виде:

    - раздел
    -- раздел
    --- раздел с товарами
    ---- товары
    
    // а вот так, на ступень ниже
    - раздел
    -- раздел с товарами
    --- товары
    

    то как мне правильно указать а файле выгрузке? Спасибо!

  • Я смотрю по ID шаблонов и вижу, что категории перемешаны с товарами.

    0_1540738880359_screenshot_054.png

  • Нет, на скрине это выгрузка только разделов. Там не стандартная иерархия

    Есть вот так:
    - общий каталог
    -- общий каталог
    --- каталог с товарами
    ---- товары
    
    Есть вот такие разделы (на уровень меньше):
    - общий каталог
    -- каталог с товарами
    --- товары
    

    Как правильно опериться, что бы загрузить товары!?

    Спасибо!

  • Покажите выгрузку с товарами.

  • Я еще её не делал, нужно понять как её выгрузить!?

  • Я делал не хитрый макрос на vb для экселя, чтобы категории товаров шли справа на лево от самой вложенной до верхней, иногда в первых колонках останутся пробелы. Но в таком раскладе получится, что у самой вложенной по вашему файлу конфигурации будет шаблон 2 и категории и раздела 5. При этом если у раздела с товарами нет родителей она все равно получит шаблон 2. В этом же загвоздка если я правильно понимаю. У меня так все работало.

 

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

  • M

    @Andchir , спасибо. Проблема и правда была в одном из плагинов, который на другом сайте нормально работает

    Читать далее
  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

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

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее