У нас тоже просто напрашивается использование подобного модуля. Мы хотим опубликовать на сайте иллюстрированные меню ruCAD - э это будут, как минимум, сотни страниц. Ну не вручную же их добавлять? Это вполне можно автоматизировать, тем более, что описания меню имеют стандартную структуру.
Модуль Fast_Content_Csv
С помощью этого модуля можно импортировать страницы, описанные в текстовом файле формата CSV. Для этой цели был создан первый простейший вариант модуля - fast_content_035. Это был вариант для конкретного применения, но с большими возможностями - в перспективе. Затем модуль был доработан немецким автором и испытывался нами в версии fast_content_csv_v09.2.
Формат CSV
CSV (Comma Separated Value) - распространенный текстовый формат для хранения данных. Как видно из названия, данные в нем разделяются запятыми. Microsoft Excel считает этот формат "своим", может читать и сохранять данные в этом формате. Однако это не лучший способ (возможно, худший) создания таких файлов. Самый лучший - обычный текстовый редактор. И, конечно, различные программы. Например, из базы данных MySQL можно экспортировать данные в формат CSV.
Фрагмент таблицы контента сайта в CSV.
В примере мы обрезаем длинные строки (ОСТАВИМ СЕМЬ ПОЛЕЙ), чтобы было понятно.
В первой строке файла содержатся имена полей. Сами имена строковые, поэтому они заключены в кавычки. Разделителем полей является символ точки с запятой:
"id";"type";"contentType";"pagetitle";"longtitle";"description";"alias";"published"
Далее идут строки данных. Поля данных по количеству и типу должны соответсвовать описаниям полей.
1;"document";"text/html";"Начало";"Главная страница";"Новости, обращения и прочие важнейшие материалы";"index";1
4;"document";"text/html";"Результаты поиска";"Вывод результатов поиска";"Здесь выводятся результаты поиска";"search";1
Здесь строковые данные заключены в кавычки, разделитель полей - точка с запятой. Разделитель полей может быть задан и другим (точка с запятой может встретиться и в тексте), например символ |.
Вообще-то нет формального стандарта CSV. При создании CSV программно можно использовать различные варианты:
Приведенный в исходнике пример был получен при экспорте в CSV из базы данных с помощью программы MySQL-Front при настройках, показанных на скриншоте. Такой файл можно открыть и в Excel, только необходимо его перекодировать в ANSI (или указать кодировку при экспорте). Тогда в Excel можно и поработать с такой таблицей:
Для импорта в MODx кодировку CSV-файла вновь потребуется преобразовать у UTF-8. Кроме того, Excel при сохранении файла может и убрать кавычкивокруг строк, а как это скажется на работе других программ зараенн сказать нельзя.
При работе с CSV важно ориентироваться на возможности конкретной программы, в данном случае нас интересует работа модуля Fast_Content_CSV. Судя по примерам, Fast_Content_CSV работает с файлами, у которых строки в кавычки не заключены.
Работа с модулем Fast_Content_CSV
К сожалению, для модуля не предусмотрены языковые файлы. Мы не будем заниматься переводом - всё-так это модуль не для повседневного употребления. К сожалению, документация по нему скудная, на немецком языке с ломаным переводом на английский. Попытаемся разобраться самостоятельно.
Вроде бы Fast_Content_CSV 0.9 позволяет:
1. Импортировать CSV в MODx. При этом могут использоваться шаблонные переменные, поддерживается любая вложенность, TV-переменные.
2. Экспортировать контент из MODx в CSV.
При обращении к модулю предлагается выбрать Workspace:
Workspace (рабочее пространство) - это одна из конфигураций, записанных в файле
assets/modules/fast_content_csv/config/workspaces.csv.
Сначала там несколько примеров:
workspace_id;workspace;bind_docid;source_file;export_file;template;action;updateempty;createparent;multiplychilds;btn_update;btn_insert;btn_upin;btn_export;btn_edit;exportalldoc;exportallTV
1;demo;sample.csv;0;8;month-folders;0;1;0;0;0;1;0;0;0;0
2;demo;0;0;fromcsv0;deletechilds;0;0;0;1;0;0;0;0;0;0
3;demo;0;multiply.csv;fromcsv0;multiplychilds;0;0;0;0;0;0;1;1;1;0
4;demo;multiply.csv;0;fromcsv0;multiplyimport;0;0;1;0;1;0;0;0;0;0
5;demo;;source_exportdemo.csv;exportdemo.csv;fromcsv0;exportdemo;0;0;0;0;0;0;0;0;0;0
6;demo;[#t#id#t#];0;0;fromcsv0;edit_childs;0;0;0;0;0;0;0;1;0;0
7;demo;[#t#id#t#];0;test2.csv;fromcsv0;exportchilds;0;0;0;0;0;0;1;1;0;0Выбрав Workspace, мы видим несколько вкладок конфигурации:
Документации, естественно, нет. Что же, будем использовать соображалку.
Пожалуй, нам будет проще разобраться на собственном примере.
Пример 1
Допустим, нам надо импортировать несколько страниц с простым (для начала) содержимым. Допустим, мы их будем импортировать ниже этой страницы (у неё ID=1534). Создадим простой CSV-файл:
parent;pagetitle;introtext;longtitle;content;published;template
1534;Импорт 1;Это импортированный контент 1;Longtitel 1;Эта страница импортирована с помощью Fast Content CSV;1;38
1534;Импорт 2;Это импортированный контент 2;Longtitel 2;Эта страница импортирована с помощью Fast Content CSV;1;38
1534;Импорт 3;Это импортированный контент 3;Longtitel 3;Эта страница импортирована с помощью Fast Content CSV;1;38
1534;Импорт 4;Это импортированный контент 4;Longtitel 4;Эта страница импортирована с помощью Fast Content CSV;0;38
1534;Импорт 5;Это импортированный контент 5;Longtitel 11;Эта страница импортирована с помощью Fast Content CSV;1;38
Этот файл у нас лежит на локальной машине.
Теперь, очевидно, нам нужно создать своё Workspace. Логично было бы создание Workspace на той же вкладке, где имеется список Workspace, но почему-то создание нового Workspace возможно только после выбора хоть какого-нибудь. Нужно перейти на вкладку Workspace, в строке new Workspace ввести имя и щелкнуть Change Workspace.
Замечание. Имя надо вводить латиницей. Для каждого Workspace на сервере в каталоге
assets/files/fast_content_csv/
будет создаваться подкаталог с именем заданного Workspace. Мы дали имя Import_rucad, в результате создался каталог
assets/files/fast_content_csv/Import_rucad.
Теперь этот проект появился в списке:
Далее, "по сооображалке", надо задать csv-файл. Переходим (прыжок назад через вкладку) на вкладку Configurations, в поле Upload File с помощью кнопки Обзор вводим имя файла на локальной машине. Теперь надо щелкнуть SaveConfig, и файл появится в списке:
Как-то неуклюже всё! Возле Upload File нет ожидаемой кнопки Загрузить, вкладки расположены в неестественном порядке, Save Config совсем не кнопкой смотрится, тут же на вкладке куча непонятных и вроде не относящихся к теме чекбоксов.
Ну, да ладно, потом сделаем тюнинг.
Теперь надо прыгнуть на вкладку Field-Config и настроить соответствие полей.
Здесь тоже шибко соображалка нужна. Слева идут имена полей MODx. Для каждого из них нужно выбрать в колонке Source-Fields соответствующее поле из нашего CSV-файла. Так как у нас имена были стандартные, то соответствие уже установлено. Но вот поля description в нашем CSV-файле не было, и мы задали для него поле longtitle. Default-values, очевидно, надо задать для отсутствующих в CSV. Мы ничего не задавали. Match-fields, по-видимому, можно задать для вычисляемых полей. С этим разберемся отдельно. И опять надо не забыть щелкнуть не похожую на кнопку кнопку Save Changes!
Вот теперь можно переходить на вкладку Start.
Очевидно, нужно выбрать Action из Insert, Update или Update/Insert и щелкнуть Run. Внизу появятся сообщения о результатах действия. При включенном флажке Run in test-mode, можно подумать, что добавления физически не произойдет.Это так и происходит, но тут есть подлость - и при снятом флажке не происходит обновления дерева документов. Чтобы увидеть результаты, надо непременно щелкнуть кнопку Обновить дерево.
В результате у нас действительно добавились заданные документы. Они вставились в виде дочек к этой заметке, там мы их и оставим, на долгую память.
Промежуточные выводы
1. Модуль fast_content_csv очень хороший, но выполнен достаточно неудачно в части "юзабельности". Если его немного улучшить в части интерфейса, да снабдить хорошей документацией - цены ему не будет.
2. Плагин fast_content_csv, возможно, тоже хороший. Но нам не удалось его проверить в бою, пока вообще непонятно зачем он, и что делает. Экспорт? Не получился у нас пока вообще экспорт, да и не нужен пожалуй. Экспорт из БД мы всегда сделаем более надежными методами.
Разумеется всё это только наши личные выводы - возможно, некомпетентные. Мы совсем немного поковырялись. Но очень уж скупо с документацией. Немецкий разработчик молчит, как партизан на допросе (если это можно сказать о немецком авторе). Вся "документация" - невнятный Tutorials на смеси немецкого с чем-то похожим на английский. В общем, к этому ресурсу мы еще вернемся - после накопления опыта работы и своих возможных корректировок
Написать комментарий
Реплика №5: 19.08.2011, 19:56:55
Реплика №4: 25.07.2011, 13:32:34
Реплика №3: 26.07.2009, 01:41:08
Реплика №2: 01.03.2009, 20:58:42
Реплика №1: 01.03.2009, 20:55:17