Получить имена и значения всех TV



  • Есть Шаблон товара, там куча ТВ полей.
    Как вывести в табличном виде на страницу товара, типо так:
    Артикул: Н45Г
    Цвет: Жёлтый
    Скажем у меня параметров (ТВ) 200, что бы руками не прописывать, как это сделать?
    И выводить только те поля, которые заполнены.
    Помогите пожалуйста! Заранее Благодарю!



  • @CSite
    Если у вас 200 TV, то вам нужно сесть и подумать над структурой и уйти от того, чтобы было 200 TV.
    Даже если вы настроите вывод, то со временем сайт будет сильно тормозить.



  • Я бы на вашем месте заменил их все одним migx полем, где в форму "по умолчанию" ввёл все нужные названия.
    И тогда у каждого товара бы уже было migx тв, со всему нужными параметрами. Например, Цвет - ... (пустое значение по умолчанию). И так было бы даже удобнее.



  • Как тогда с импоот-эуспорт поступать?



  • @CSite насколько я помню, http://e-store.modx-shopkeeper.ru/katalog/dopolneniya-dlya-modx/import-eksport-tovarov.html вот это замечательное дополнение умеет экспорт/импорт делать. В том числе и migx полей.



  • А catalogfill можно настроить для импорта в minishop2?



  • @pooding то что оно это умеет я знаю, я не вижу всю картину пока что.
    как же тогда тегМанагер2, сможет он с такой таблицей мигс работать?



  • @CSite Не пойму, вы хотите скрестить minishop и TagManager?
    Не уверен, что эта связка работает.

    Мне больше SHK нравится. Ну да ладно, можете привести пример ваших товаров из разных категорий, чтобы понять почему у вас 200 ТВ.



  • Что касается catalogFill и MIGX, то можно добавить пользовательские функции (на импорт и на экспорт), которые будут принимать понятный клиенту формат данных и преобразовывать его в JSON, которым оперирует MIGX (и обратно).
    К примеру, имеем галерею товара (TV с ID=37). В таблице MIGX есть поля image и title.
    В поле Excel-файла можно указывать так:

    /images/catalog/image1.jpg||Заголовок1,/images/catalog/image2.jpg||Заголовок2

    и т. д.
    Функция для импорта тогда будет примерно такая:

    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
    $output_arr = $value_arr;
     if(!function_exists("clrMIGX")) {
         function clrMIGX($inp){
            $arr = explode(',', $inp);
    	    $count = 1;
    	    foreach($arr as $item){
                    $a_item = explode('||', $item);
                    $image = $a_item[0];
                    $image = str_replace('/', '\/', $image);
                    $title = $a_item[1];
                    $out .= '{"MIGX_id":"'.$count.'","image":"'.$image.'","title":"'.$title.'"},';
                    $count++;
                }
            $out = str_replace("\n", "", $out);
            return '['.mb_substr($out, 0, -1).']';
        }
     }
    //применяем функцию к TV с ID=37:
    if(isset($output_arr['tv']['37'])) $output_arr['tv']['37'] = clrMIGX($output_arr['tv']['37']);	
    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;
    }


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