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


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()
    

    Ошибка в самописном снипете, но даже если его убрать, всё равно импорт не работает нормально
    3. Нормально создаются, все уникальные

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

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

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

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

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

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

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

 

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

  • Z

    Спасибо, действительно проще создать отдельно.

    Читать далее
  • Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]].

    Можно не использовать [[+addit_data]], а выводить параметры по-отдельности.

    Цитата из документации:

    [[+shk_любой доп.параметр]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]].
    Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым.
    Пример: [[+shk_param1]], [[+shk_param1_1]], [[+shk_param1_2]] ...
    [[+shk_любой доп.параметр_price]] - цена доп.параметра. Пример: [[+shk_param1_price]].

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

    Доброго времени суток. Не могу разобраться, как передать данные migx-поля в корзину в плейсхолдер без "дублирования" в [[+addit_data]]
    Суть в чем: У меня есть 2 цены у товара (со скидкой и без скидки) Форма для отправки в корзину:

    <form action="[[~[[*resource_id]]? &scheme=`abs`]][[*alias]].html" method="post"> <input type="hidden" name="shk-id" value="[[*id]]" /> <input type="hidden" name="shk-name" value="[[*pagetitle]]" /> <input type="hidden" name="price_old__[[*id]]__add" value="[[*price_old]]" /> <input type="hidden" name="shk-count" value="1" /> <div class="product-price"> Цена: <span class="shk-price">[[!*price:shk_curr_rate:num_format]]</span> Старая цена - <span class="shk-price-old">[[+price_old]]</span> [[!+shk_currency]] </div> <div class="padding-lr-30"> <h5>Дополнительные услуги</h5> [[*param1]] </div> <div class="product-price"> <button class="btn btn-lg btn-primary" type="submit" class="shk-but">В корзину</button> </div> </form>

    Данные со "старой ценой" в корзину попадают нормально и выводится в нужном месте в плейсхолдере:
    [[+shk_price_old]]
    Но проблема в том, что эта старая цена "дублируется" в плесхолдер "Дополнительных услуг" - [[+addit_data]]. Как сделать чтобы старая цена не выводилась в [[+addit_data]]? Или может я как то не правильно передаю MIGX-параметр в корзину ? Заранее спасибо.

    Читать далее
  • Фотографии, как я понял, это второй вопрос. Я по нему пока ничего не отвечал и не просил информации. Это не отменяет того, что в вашем конфиге есть ошибка, о которой я писал выше. Не нужно задавать разные вопросы в одной теме, чтобы не было путаницы.
    http://forum.modx-shopkeeper.ru/topic/15/рекомендации-по-оформлению-темы-с-вопросом

    Читать далее