catalogfill импорт и вывод через getResource



  • После импорта вывожу ресурсы через сниппет getResource. Часть ресурсов выводиться, а часть игнорируется, но если выбрать тот ресурс который не вывелся изначально и пересохранить его, то после этого он выведется через сниппет. Короче загадка)) не понятно почему часть ресурсов выводиться, а часть нет и больше всего непонятно, то что после пересохранения документа он появляется. Кеш чистил, результата не было, только пересохранение документа помогает, но это штучно и долго, хотелось бы предусмотреть это сразу же в catalogfill. Жду помощи!!!!



  • Файл конфигурации

    <?php
    
    //разбивка по столбцам при импорте и экспорте (content|tv|category)
    $cf_config['content_row'] = array(
        array('ЖК',array(0,'tv')),
        array('Дом',array('pagetitle','content')),
        array('Подъезд',array(0,'tv')),
        array('Этаж',array(12,'tv')),
        array('Номер квартиры',array(9,'tv')),
        array('Id квартиры',array(34,'tv')),
        array('Кол-во комнат',array(25,'tv')),
        array('Полная стоимость, руб',array(13,'tv')),
        array('Стоимость кв.метра, руб',array(29,'tv')),
        array('Общая площадь, м2',array(11,'tv')),
        array('Площадь балкона, м2',array(0,'tv')),
        array('Жилая площадь, м2',array(0,'tv')),
        array('Площадь кухни, м2',array(0,'tv')),
        array('Куда выходят окна',array(30,'tv')),
        array('Кол-во лоджий',array(0,'tv')),
        array('Кол-во балконов',array(0,'tv')),
        array('Кол-во смежных санузлов',array(0,'tv')),
        array('Кол-во раздельных санузлов',array(0,'tv')),
        array('Номер помещения по БТИ',array(0,'tv')),
        array('Номер на площадке',array(0,'tv')),
        array('Общая площадь по БТИ',array(0,'tv')),
        array('Код планировки',array(14,'tv')),
        array('Студия',array(0,'tv')),
        array('Свободная планировка',array(0,'tv')),
        array('Статус',array(10,'tv'))
    );
    
    //значения по умолчанию при импорте или проверка при экспорте
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'deleted' => 0,
            'published' => 1,
            'template' => 3
        ),
        'tv' => array(
            //7 => 0
        )
    );
    
    //первая строка - названия полей
    $cf_config['include_captions'] = true;
    
    //число товаров импортируемых за один раз (загрузка по группам). 0 - не ограничивать.
    $cf_config['batch_import'] = 0;
    
    //разбивать по категориям
    $cf_config['include_categories'] = false;
    
    //удалять дочерние категории при очистке и обновлении каталога
    $cf_config['delete_subcategories'] = true;
    
    //по какому полю проверять соответствие товара при обновлении. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_field'] = false;
    
    //проверять соответствие товара при обновлении по значению TV. Указать ID TV. false - не проверять (очистка категории при обновлении).
    $cf_config['imp_chk_tvid_val'] = 34;
    
    //Добавлять товары, которые не найдены при обновлении по TV (imp_chk_tvid_val) или полю (imp_chk_field)
    $cf_config['imp_if_not_exist'] = true;
    
    //удалять HTML-теги при экспорте
    $cf_config['exp_strip_tags'] = true;
    
    //автоматически генерировать псевдоним (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['tv']['13'])) {
            $output_arr['tv']['13'] = preg_replace("/[^0-9]/",'',$output_arr['tv']['13']);
    	}
        if(isset($output_arr['tv']['29'])) {
            $output_arr['tv']['29'] = preg_replace("/[^0-9]/",'',$output_arr['tv']['29']);
    	}
        $output_arr['content']['alias'] = $output_arr['content']['alias'].'-'.$output_arr['tv']['9'].'-'.$output_arr['tv']['34'];
    	
        return $output_arr;
    }
    ?>
    

  • Администраторы

    1. Папку /core/cache чистили?
    2. Есть ли ошибки в Журнале ошибок или при очистке кэша в админке?
    3. Псевдонимы страниц нормально создаются при импорте?


  • @Andchir

    1. Чистил
    2. При чистке нету.
      - error.log
    [2017-06-14 08:15:07] (ERROR @ /core/cache/includes/elements/modsnippet/31.include.cache.php : 15) PHP warning: Invalid argument supplied for foreach()
    

    Ошибка в самописном снипете, но даже если его убрать, всё равно импорт не работает нормально

    1. Нормально создаются, все уникальные

  • Администраторы

    Причин может быть много. Надо смотреть.
    Вы можете создать локально ещё один сайт с чистым MODX и проверить импорт там.



  • @Andchir тестирую
    Пока что заметил, что если удалить все добавленное кнопкой "Отчистить категорию", то кеш не чиститься и данные на сайте не удаляются хотя ресурсов уже нет



  • Кроме того что написал сообщением выше ошибок нет, всё как часы. Все ТВ параметры продублировал, файл конфигурации тот же, уже нет идей куда смотреть. Если есть догадки напишите пожалуйста



  • НАШЕЛ КОРЕНЬ ПРОБЛЕМ!!! Содержимое одного TV параметра почему-то не заполняется (тип вывода: одиночный список, возможные значени: Квартира свободна==2||Квартира забронирована==1||Квартира продана==0), в exel файле для этого ТВ передаются цифры 0 1 или 2 и вот они как раз-то не передаются, а точнее где-то передаются, а где-то нет О.о очень странно.

    Кажись разобрался. В некоторых строках у меня указывается значение 0 и видимо скрипт его воспринимает как null и не передаёт. Прошу подсказать где изменить условие.!!!!


  • Администраторы

    в exel файле для этого ТВ передаются цифры 0 1 или 2 и вот они как раз-то не передаются, а точнее где-то передаются, а где-то нет О.о очень странно.

    Проверьте тип ячейки в Экселе. Должен быть текстовый тип.



Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.