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


CatalogFill как правильно настроить XML для импорта?

  • Про скачивание картинок вот тема:
    http://forum.modx-shopkeeper.ru/topic/1247/catalogfill-и-изображения

  • вот как выглядит строка (1 товар) в моем json файле
    {"Big Images": ["/assets/templates/img/img1.jpg", "/assets/templates/img/img2.jpg", "/assets/templates/img/img3.jpg"], "Small Images": ["/assets/templates/img/small_img1.jpg", "/assets/templates/img/small_img2.jpg", "/assets/templates/img/small_img3.jpg"], "Title": ["Iphone 7"], "Summary": [], "Price": ["499.99"], "Color": ["", "Red", "Pink", "Gray"], "Main Info": ["здесь много различного Html кода"], "Package Weight": []}

    Как она должна выглядеть в формате xml что бы при импортировании все было ок?

  • За ссылку по скачивании картинок отдельное спасибо 😃

  • Как она должна выглядеть в формате xml что бы все было ок?

    Зависит от того как вы потом будете это всё выводить на вашем сайте.

    "Main Info": ["здесь много различного Html кода"],

    XLS тоже нормально поддерживает HTML код, а вот с CSV могут быть проблемы.

  • Вот пример из одного из конфигов, которые есть в комплекте к компоненту:

    //Структура 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;
    

    Что тут непонятного? Вместо этого кода вы копируете свой XML и вместо данных вставляете имя поля или "tv20", где 20 - это ID ТВ параметра.

  • Просто буду в нужных местах вставлять [[*название tv]] тоесть на месте названия товара [[*Title]] и т.д. Html буду импортировать как код, внутри определенного дива на сайте. (будет отвечать за описания)

  • Основная проблема в картинках. Их в 1 товаре у меня от 0 до 10. Поэтому я их сложил в 1 Big Images в качестве массива.
    На сайте мне надо в 1 блоке вызвать первое значение массива Big Images(первую картинку), во втором вторую и т.д. А когда картинки заканчиваются - Не показывать блок с картинкой(это я уже сделал).
    Так вот - я не понимаю как правильно в XML должны выглядеть Big Images(сравнение как конвертирует онлайн конвертер и python библиотека в шапке).
    Какой из вариантов корректный:
    <Big_Images>tv первой картинки</Big_Images>
    <Big_Images>tv второй картинки</Big_Images>
    <Big_Images>tv третьей картинки</Big_Images>

    или

    <Big_Images type="list">
    <item type="str">tv первой картинки</item>
    <item type="str">tv второй картинки</item>
    <item type="str">tv третьей картинки</item>
    </Big_Images>

  • это я уже сделал

    И как вы это сделали? В каком виде данные вам нужны?

    Я жду от вас информацию:
    вот в таком виде данные у меня на сайте: ...
    а вот в таком виде данные у меня в файле, который хочу импортировать: ... (лучше показать в обоих форматах JSON и XML)

  • Участник @Tanik написал в CatalogFill как правильно настроить XML для импорта?:

    <Big_Images>tv первой картинки</Big_Images>
    <Big_Images>tv второй картинки</Big_Images>
    <Big_Images>tv третьей картинки</Big_Images>

    Самый простой способ это для каждой картинки создать отдельный ТВ параметр. В этом случае ваш код XML в конфиге будет выглядеть:

    //Структура XML файла для импорта
    $cf_config['imp_xml_structure'] = <<<EOF
    ... тут остальной код
    
    <Big_Images>tv10</Big_Images>
    <Big_Images>tv11</Big_Images>
    <Big_Images>tv12</Big_Images>
    
    ... тут остальной код
    EOF;
    

    10, 11, 12 - ID ТВ куда вам нужно импортировать.

  • Я уж было подготовил ответ, но вы уже ответили на мой вопрос.
    Как раз то что надо
    Большое спасибо!

 

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

  • Y

    Когда импортирую просто нажав обновить и выбрав в целом категорию выпадет ошибка Error -1 =(

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

    Ясненько =(
    В общем, я решил проблему с разделением на категории(просто с помощью python разсортировал все строки с n идентификатором в n.xml файл и импортировал по отдельности)
    Только вот с заполнением проблема.
    Старый файл был такого вида:

    <data> <Title>pagetitle</Title> </data>

    Вот так выглядит мой файл которым я хочу обновить импортированные ранее товары(не добавляя новых товаров а только собрав из файла нужные строки с данными и импортировав их к уже созданным старым файлом товарам):

    <data> <Color> <Color1/> <Color4>Brown</Color4> <Color5>Cloudy Gray</Color5> </Color> <Price>4.75</Price> <Title>Название товара</Title> <bonus_info> <bonus_info1>blabla</bonus_info1> <bonus_info2>blabla</bonus_info> </bonus_info> </data>

    Где 1 <data> на 1 строку
    Вот мой конфиг:

    <?php //разбивка по столбцам при импорте и экспорте (content|tv|category) $cf_config['content_row'] = array( //array('Title',array(3,'tv')), //array('Price',array(2,'tv')) ); //значения по умолчанию при импорте или проверка при экспорте $cf_config['imp_content_default'] = array( 'content' => array( 'deleted' => 0, 'published' => 1, 'description' => '', 'template' => 5 // ID шаблона товара //'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'] = 500; //разбивать по категориям $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'] = false; //удалять 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'] = ''; //путь (xpath) в XML структуре до товаров $cf_config['imp_xml_itemsparent_path'] = '';//'/catalog/shop/offers'; //Структура XML файла для импорта $cf_config['imp_xml_structure'] = <<<EOF <data> <Color> <Color1>tv 10<Color1/> <Color2>tv11</Color2> <Color3>tv12</Color3> <Color3>tv13</Color3> </Color> <Price>tv4</Price> <Title>pagetitle</Title> <bonus_info> <bonus_info1>tv7</bonus_info1> <bonus_info2>tv8</bonus_info2> <bonus_info3>tv9</bonus_info3> </bonus_info> </data> 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; } ?>

    Читать далее
  • https://e-store.shopkerx.net/katalog/modx_extras/catalogfill
    В описании написано:

    XML - только импорт и только один уровень вложенности

    Это означает, что для XML категории не работают. Всё импортируется в одну категорию, которая указывается при импорте.

    Возможно, я не понял в чём конкретно проблема. Также нужно показать полный конфиг.

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

    При попытке импортировать данный файл появляется ошибка

    Error -1

    Читать далее