Что такое ImportX?
ImportX – дополнение для MODX, используемое для для быстрого создания новых ресурсов из входных CSV данных. Они могут быть вставлены в textarea или загружены в виде .txt или .csv файла.
Разработано на средства Working Party, Digital Agency, Сидней.
Системные требования
- MODX 2.0.x or 2.1.x (дополнение разрабатывалось с помощью версий 2.0.8 и 2.1-rc3, экспресс-тесты на версии 2.2 не выявили ошибок)
История создания
Разработка инициирована Марком Хамстра (Mark Hamstra) в апреле 2011.
Релизы
Версия |
Дата |
Автор |
Принципиальные отличия |
1.0.0-rc |
2 мая 2011 |
Марк Хамстра |
Загрузка CSV файлов, загрузка в коневой контекст, затем в 'web' |
0.9.0-alpha |
25/4/2011 |
Марк Хамстра |
Консольная работа в версии 2.0.8+, испоьзуются языковые модули. |
0.2.0-alpha |
23/4/2011 |
Марк Хамстра |
|
0.1.0-alpha1 |
7/4/2011 |
Марк Хамстра |
|
Использование
Использовать ImportX просто, нужно подготовить CSV данные и настроить несколько параметров в зависимости от ситуации.
После установки с помощью Package Manager, обновите страницу и найдите ImportX в меню компонентов (Components menu) (см. иллюстрацию). Откройте вкладку и ознакомьтесь с доступными опциями. Названия большинства говорят сами за себя.
Вкладка CSV Input (входные данные CSV)
В частности, вы обнаружите большое поле textarea для вода исходных данных CSV, ниже будет поле для выбора загружаемого csv файла.
В поле "Separator" (Разделитель), вводится разделитель столбцов списка CSV. В качестве разделителя может использоваться любой символ, а также длинные многосимвольные комбинации, по умолчанию разделителем является точка с запятой ";".
И, наконец, последнее, что в основном вам нужно знать об этой закладке, это то, где находится кнопка submit (отправить), если вы ее еще не обнаружили, то она находится в правой верхней части рабочей области.
Для ImportX не имеет значения формат CSV, пока выполняются следующие условия:
Известно, какой разделитель используется. По умолчанию используется точка с запятой ";", но его изменить во вкладке CSV Input (входные данные CSV).
- Первая строка содержит “заголовки”, названия столбцов. Можно использовать поля ресурсов (пример: pagetitle;alias;richtext), а также Template Variables (Шаблонные переменные). Шаблонные переменные должны быть перечислены в виде "tvN", где N - это ID шаблонной переменной, значение N должно быть введено. Пример первой строки с заголовками: pagetitle;alias;richtext;tv3;content;tv4.
- Должна быть минимум одна строка со значениями.
- Каждая строка должна содержать одинаковое число элементов. Элемент или ячейка – это значение определенной записи, которое должно быть добавлено в качестве значения определенного поля.
- Первая строка со списком заголовков должна содержать столько же заголовков, сколько будет столбцов с данными.
Установки по умолчанию.
Закладка "Установки по умолчанию" содержит пару настроек, которые вы можете задать для использования по умолчанию.
Для версии 1.0.0-rc вы можете задать следующие параметры:
- Источник: или целочисленное обращение к существующему ID ресурса, или значение context_key для импорта в корень context_key , или 0 для импорта в корень "web контекста по умолчанию”.
- Публикация: будет ли ресурс опубликован по умолчанию.
- Доступность для поиска: будет ли ресурс доступен для поиска по умолчанию.
- Видимость из разделов меню: будет ли ресурс скрыт для доступа из разделов меню по умолчанию.
Начинаем колдовать (и искать, где ошиблись)
После клика на кнопку "Start Import" (“Начать импорт”), скрипт начнет выполняться и будет выполнять анализ (парсинг) CSV. При положительном результате анализа вы увидите что-то подобное:
На этом этапе вы можете скачать результаты парсинга в виде файла или просто закрыть окно. Дерево ресурсов обновится автоматически и будет видно, что получилось.
Если вы увидели что-то иное на экране, из таблицы ниже вы сможет узнать, что нужно сделать ,чтобы исправить это.
Please choose a Parent to import to. Specify 0 to put new resources in the root of the site. Пожалуйста, выберите Источник (Parent) для импорта. Задайте 0 для размещения нового ресурса в корневой директории сайта. |
Поле " источника" ("parent") на закладке Установки по умолчанию (Default settings) не заполнено. Всегда должно быть значение: 0, ID подходящего ресурса, или context_key. |
Подкорректируйте значение поля Источник ("Parent") на закладке Установки по умолчанию (Default settings). |
Parent not numeric or valid context key. Источник (Parent) не содержит цифру или подходящий значение context_key |
|
|
Parent needs to be a positive integer. Источник (parent) должно быть целым положительным числом |
Вами задано отрицательное число в поле “Источник” (parent). |
Задайте 0 или положительное число в поле Источник (parent). |
Please add your CSV values in order for them to be processed. Пожалуйста, добавьте CSV данные для обработки |
Вы не задали никаких CSV данных. |
Добавьте данные вручную или загрузите файл. |
Error reading the uploaded file. Ошибка чтения загруженного файла. |
Вы загрузили файл, но возникла ошибка при его чтении. Это могло произойти из-за ошибки в файле или при чтении файла из директории для хранения временных файлов на сервере. |
Убедитесь, что файл не поврежден. Возможно стоит проверить настройкиk вашего open_basedir . |
Invalid CSV value posted. Введены неверные CSV данные. |
Суммарная длина введенных CSV данных меньше 10 знаков, данные признаны недействительными. |
Проверьте данные CSV, они должны быть не меньше 10 знаков. |
Not enough data given. Expecting at least one header row, and one data row. Получено недостаточно данных. Ожидается минимум одна строка с заголовком и одна строка с данными. |
Скрипту требуется минимум одна строка с заголовком и одна с данными, вы не предоставили их. Предполагается, что строки будут разделены символом перевода строки (\n). |
Проверьте CSV данные и убедитесь, что строки разделены символом перевода строки (\n). |
Element count do not match. Please check for correct syntax on line . Элемент count не подходит, проверьте корректность синтаксиса на строке . |
Одна строка имеет больше или меньше элементов, все строки должны содержать одинаковое число элементов. Распространенной причиной может быть попадание разделителя в поле значений. |
Убедитесь, что используете одинаковый замыкающий разделитель и что разделитель не используется в качестве значения в одном из полей. Если это так, то используйте другой разделитель. |
An unexpected error occurred saving the resource. Непредвиденная ошибка из-за недостатка ресурсов. |
MODX Processor вернул ошибку. До версии 1.0.0-pl это означало бы "Массив", но эта проблема решена в версии 1.0.0-pl. Различные причины могут привести к появлению данного сообщения, но в основном это связано с безопасностью. |
Зависит от конкретной ошибки. |
Your header has one or more invalid fieldnames. The invalid fieldname(s) is (are): . Первая строка содержит одно или несколько неверных имен полей. Неверное имя поля: . |
Первая строка содержит неопознанный заголовок. Это создает ошибку. Убедитесь, что все заголовки написаны правильно. В некоторых случаях проблема может возникнуть из-за кодировки обрабатываемого файла. |
Исправьте заголовки (и используйте ТV в виде "tvN", где N – ID TV) , или откройте ваш файл в notepad, скопируйте в буфер обмена и вставьте в поле ввода CSV textarea . |
( is expected to be an integer ( Должно быть целым числом. |
Найденный заголовок элемента начинается на TV, но не является целым числом и из-за этого не может быть найден нужный TV для добавления данных. |
Исправьте один из заголовков в первой строке. |
(no TV with an ID of ) (нет TV с ID ) |
Заголовок с ТV верен, но нет ТV с таким ID. |
Исправьте один из заголовков в первой строке. |
(no TV with an ID of ) (нет TV с ID ) | Заголовок с ТV верен, но нет ТV с таким ID. | Исправьте один из заголовков в первой строке. |
Пример CSV и связанные с CSV примечания.
1 2 3 4 5 |
|
(Неинтересный фиктивный пример, я приглашаю прислать пример получше!)
Вот несколько примечания относительно CSV:
- Убедитесь, что вы не используете разделитель в поле контента. Можете использовать разделитель наподобие ";;;" если импортируете большой объем контента, который может содержать разделитель ";".
- При импортировании данных, которые включают столбец “шаблон” или “пользователь" (создано тем-то и т.д.), убедитесь, что ваш CSV использует ID связанных объектов, а не имя.
- Можно импортировать значения TV, создав столбец с заголовком наподобие "tv4", где “4” – это ID TV.
Вопросы, связанные с временем выполнения.
Начиная с ImportX 1.1 можно ограничить время выполнения импортирования и получить отчет о результатах.
Обновление данных вместо создания нового ресурса.
Начиная с версии 1.1 можно изменять системные настройки importx.processor с “создать” на “обновить”, для обновления ресурсов, основанных на ID, которое выполняется согласно запроса. Если ресурс не найден, он создается.
Форматы, отличные от CSV
Начиная с версии 1.1 можно использовать больше форматов данных, если есть дополнение, которое их нормализует.
Это может быть достигнуто созданием нового класса (смотри core/components/importx/processors/prepare/ - prepare.class.php основной класс, который вы можете усовершенствовать, csv.php также используется в этих целях) и внесением новых importx.datatype системных установок в имя вашего файла (кроме части ".php").
На этом все про CSV, но я буду очень признателен, если кто-то сделает возможным использование XML или других форматов. Не стесняйтесь обращаться ко мне (hello@markhamstra.com) если у вас появился интерес к этому, но требуется какая-то помощь в вопросе "что делать?".
И наконец…
Пользуйтесь!