Как обернуть # несколько tv при импорте, а при экспорте наоборот в catalogfill?



  • Доброго времени суток! С прошедшими праздниками, кстати!

    Modx 2.5.7-pl
    Catalogfill 2.4.9-pl1

    Скажите пожалуйста, как обернуть несколько tv при импорте в catalogfill решетками (#)
    Пример: в таблице csv значение ячейки Да > #Да# ?

    А при экспорте их же обратно #Да# > Да

    Знаю, что через filter_import и filter_export, но знаний пока не хватает. Помогите пожалуйста! Заранее благодарен!


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

    Добавляем решетки:

    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        
        if(isset($output_arr['tv'][10]))
            $output_arr['tv'][10] = '#' . $output_arr['tv'][10] . '#';
        
        return $output_arr;
    }
    

    Убираем решетки при экспорте:

    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        
        if(isset($output_arr[10]))
            $output_arr[10] = trim($output_arr[10], '#');
        
        return $output_arr;
    }
    

    10 - ID TV.



  • @Andchir Спасибо большое!

    А еще можно спросить: если несколько tv?


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

    если несколько tv?

    Добавлять такие же строки ниже

    if(isset($output_arr[10]))
            $output_arr[10] = trim($output_arr[10], '#');
    


  • @Andchir Огромное спасибо!!!

    Извините конечно, но можно последний вопрос:
    Если значений несколько?

    Значение 1,Значение 2,Значение 3
    

    как его превратить при импорте в:

    #Значение 1#||#Значение 2#||#Значение 3#
    

    а при экспорте обратно?


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

    Импорт

    //функция для фильтрации значений при ИМПОРТЕ
    function filter_import($value_arr){
        $output_arr = $value_arr;
        
        if(isset($output_arr['tv'][10])){
            $tmp = explode(',', $output_arr['tv'][10]);//Разбиваем строку по запятой в массив
            $tmp = array_map('trim', $tmp);//Убираем лишние пробелы, если они есть
            $output_arr['tv'][10] = '#' . implode( '#||#', $tmp ) . '#';//Из массива создаем строку с другим разделителем
        }
        
        return $output_arr;
    }
    

    Экспорт

    //функция для фильтрации значений при ЭКСПОРТЕ
    function filter_export($value_arr,$doc_id=0){
        $output_arr = $value_arr;
        
        if(isset($output_arr[10])){
            $tmp = explode('#||#', trim($output_arr[10], '#'));
            $output_arr[10] = implode(',', $tmp);
        }
        
        return $output_arr;
    }
    


  • @Andchir Все работает отлично, спасибо учитель!



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