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


CatalogFill не обновляет

  • Modx 2.2.14
    CatalogFill 2.4.5

    При обновлении товара, любом, цена, название, позиция становится контейнером с ID 0, т.е. по сути это контекст, и соответственно если ее развернуть идет дублирование всех ресурсов, добравшись до "обновленного ресурса" разворачивать можно до бесконечности.
    Добавление новых товаров происходит без ошибок. Выгрузка тоже.
    Версии catalogfill ставил разные, обновляют так же.

    Конфиг:

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
    array('Категория',array(6,'category')),
    array('Подкатегория',array(6,'category')),
    array('Подподкатегория',array(6,'category')),
    array('Сортировка',array(27,'tv')),
    array('Идентификатор',array('id','content')),
    array('Рекомендуем (Указать идентификаторы ресурсов через запятую)',array(26,'tv')),
    array('Донор',array(62,'tv')),
    array('Артикул',array(4,'tv')),
    array('Наименование',array('pagetitle','content')),
    array('Картинка',array(1,'tv')),
    array('Превью 1',array(22,'tv')),
    array('Превью 2',array(23,'tv')),
    array('Превью 3',array(24,'tv')),
    array('Контент',array('content','content')),
    array('Цена',array(2,'tv')),
    array('Выделить цену красным (1 - да, 0 - нет)',array(41,'tv')),
    array('Старая цена',array(40,'tv')),
    array('Наличие товара (1 - да, 0 - нет)',array(21,'tv')),
    array('Дизайнер',array(3,'tv')),
    array('Бренд',array(7,'tv')),
    array('Коллекция',array('longtitle','content')),
    array('Цвет',array(10,'tv')),
    array('Картинка бренда',array(12,'tv')),
    array('Материал',array(11,'tv')),
    array('Страна производитель',array(8,'tv')),
    array('Размеры',array(9,'tv')),
    array('Объем',array(42,'tv')),
    array('Description',array(48,'tv')),
    array('Keywords',array(50,'tv')),
    array('Title',array(49,'tv')),
    array('Ссылка',array ('uri','content'))
    );
    
    //значения по умолчанию при импорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'published' => 1,
            'template' => 4
            //'createdon' => strtotime("now")
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 300;
    
    //разбивать по категориям
    $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'] = 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;
    }
    
    ?>```
  • Дерево

    alt text

  • Дайте файл, который загружаете этим конфигом.

  • @Andchir отправил в л\с

  • При обновлении товара, любом, цена, название, позиция становится контейнером с ID 0, т.е. по сути это контекст

    Можете показать скриншот с этой проблемой? При чём тут контекст я не понял.

  • array('Идентификатор',array('id','content')),
    

    В файле в колонке "Идентификатор" пусто. Отсюда и появляется ноль. Может нужно убрать эту колонку?

  • @Andchir сейчас проверю

  • Андрей, спасибо. Работает.
    Я всю голову сломал, а решение было на поверхности. Но я был уверен, что пустые поля не обновляются.

  • Но я был уверен, что пустые поля не обновляются.

    Есть такой параметр и он у вас был включен:

    //Импортировать (обновлять) пустые значения
    $cf_config['imp_empty'] = true;
    
  • @Andchir а этого я и не заметил. спс.

 

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

  • G

    Отличная новость, Андрей, спасибо!
    Наконец-то настроил окружение для разработки SHK4 в винде через Vagrant, все работает достаточно шустро, глюков замечено не было. В скором времени планирую сделать свою инструкцию на эту тему, думаю будет полезна для начинающих.

    У меня вопрос - я далеко не искушенный пользователь git, для разработки магазина тупо создал форк с вашего репозитория shopkeeper4 v4.0.0, все коммиты и изменения заливаю в свой репо. Есть какая-то возможность отслеживать изменения в вашем репозитории и вносить в мой? Например, я бы хотел обновлять какие-то php файлы, но не трогать шаблоны *twig.

    Читать далее
  • редактироваться могут и старые. опубликованные, ресурсы, не хотелось бы чтобы к ним приписались дубли id

    В коде плагина можно всё учесть, а не всегда добавлять ID без проверок.

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

    @Andchir редактироваться могут и старые. опубликованные, ресурсы, не хотелось бы чтобы к ним приписались дубли id. Есть событие OnDocPublished но по-моему оно не срабатывает...

    Читать далее
  • В принципе ресурс импортируется неопубликованным и потом публикуется вручную

    Есть событие редактирования ресурса, можно привязаться к этому событию.

    Читать далее