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


CatalogFill + MIGX (не shopkeeper)

  • Доброго времени суток!

    Прошу помощи в настройке catalogFill. Купил сие дополнение, разбираюсь с конфигурацией. Что качается обычных полей - тут все просто и ясно. Возникла проблема с экспортом/импортом поля MIGX.

    Задача и суть проблемы: у меня есть сайт со списков ресурсов (не shopkeeper), у каждого ресурса есть множество полей. Раньше это были простые TV, но скорость загрузки сайта оставляла желать лучшего (особенно страницы каталога с pdoResources). Сейчас все перевел в MIGX - создал новое поле "object_profile" с типом "migx" и в него, соответственно, добавил все остальные поля.

    Подскажите, как должен выглядеть файл конфигурации, чтобы был импорт/экспорт полей из MIGX-поля (не MIGXDB) и при этом файл на выходе разбивался на столбцы? Тут у меня 2 догадки: 1) собирать конфиг на базе "migx_catalog", 2) на базе default, но тогда по-идее нужны фильтры для импорта и экспорта.

    Буду признателен за ответы. Спасибо.

  • Подскажите, как должен выглядеть файл конфигурации, чтобы был импорт/экспорт полей из MIGX-поля (не MIGXDB) и при этом файл на выходе разбивался на столбцы?

    Поля MIGX в базе данных сохраняются как JSON-строка. Импортировать тоже нужно как JSON. Если в файле нужно чтобы это выглядело красиво, то нужно написать фильтр в функции "filter_import()" в конфиге. Так же для экспорта.

  • @Andchi, т.е., как я понимаю, за основу нужно брать файл конфига default?

    Если у меня поле MIGX имеет id 40, то файл будет выглядеть примерно так?

    <?php
    
    $cf_config['content_row'] = array(
        array('ID',array('pagetitle','content')),
        array('MIGX',array(40,'tv'))
    );
    
    $cf_config['imp_content_default'] = array(
        'content' => array(
            'template' => 4
        ),
        'tv' => array()
    );
    
    $cf_config['include_captions'] = true;
    $cf_config['batch_import'] = 0;
    $cf_config['include_categories'] = false;
    $cf_config['delete_subcategories'] = true;
    $cf_config['imp_chk_field'] = 'pagetitle';
    $cf_config['imp_chk_tvid_val'] = false;
    $cf_config['imp_if_not_exist'] = true;
    $cf_config['exp_strip_tags'] = false;
    $cf_config['imp_autoalias'] = true;
    $cf_config['imp_before_change'] = false;
    $cf_config['exp_delete_file'] = false;
    $cf_config['exp_csv_charset'] = 'UTF-8';
    $cf_config['imp_empty'] = true;
    $cf_config['imp_custom_processor'] = '';
    $cf_config['imp_xml_itemsparent_path'] = '';
    $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['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;
    }
    
    ?>
    

    А в фильтрах уже добавляю обработчики?

  • Я нашел на форуме такое решение:

    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
    $output_arr = $value_arr;    
    if(!function_exists("clearMIGX")) {
    function clearMIGX($input){
        $items = json_decode($input, true);
            foreach($items as $item){
    	$image = $item['image'];
    	$title = $item['title'];
    	$out .= $image.'||'.$title.',';
            }
        return mb_substr($out, 0, -1);
    }
    }
    //применяем функцию к TV с ID=37:
    if(isset($output_arr[37])) $output_arr[37] = clearMIGX($output_arr[37]);    
    return $output_arr;
    }
    

    Но оно добавляет все поля MIGX в один столбец с заголовком "MIGX" (берет из array('MIGX',array(40,'tv'))), с разделением ||, а каким образом можно под каждое TV создать свой столбец, при этом столбец MIGX не создавался вовсе?

 

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

  • Что нового в 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 (красным выделено, то что приходится постоянно удалять

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

    Участник @Jokerit написал в TagManager2 отображает в фильтре удаленные значения TV-полей:

    tmRefresh

    Так и не смог найти как включить

    Читать далее