Центр документации
|
Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »
Общая информация Amiro.CMS предоставляет систему импорта из разнообразных источников по заданному расписанию. Так же, возможно как расширение функционала уже созданных драйверов импорта, так и написание своих драйверов импорта на основе абстрактных классов AMI_Http_DataImportDriver и AMI_File_DataImportDriver.
Каждый драйвер импорта должен быть унаследован от одного из двух абстрактных классов:
Драйвер
импорта должен реализовывать интерфейс AMI_iDataImportDriver. В
частности, при создании собственного драйвера импорта, необходимо
реализовать метод doImport() (остальные необходимые методы уже
реализованы в базовых классах, однако, при необходимости, вы можете их
перегрузить), в котором будет описана логика разбора данных после
получения их из источника. Каждый драйвер может иметь набор
настроек, которые добавляются на форму, отображаемую при создании задачи
в модуле импорта. Например, для драйвера RSS это может быть опция
принудительного удаления html-тегов из импортируемого текста, а для
драйвера CSV - разделитель полей файла. Драйвер должен иметь
имя файла как AmiClean_DataImport_YourNameImport, совпадающее с именем
класса. Для того, чтобы система подгружала Ваш драйвер, необходимо
добавить строку вида
в файл _shared/code/classes/60/resourceMapping.60.php в
секцию DataImport, а после этого задекларировать и включить драйвер в
файле _local/data_import_drivers.php. Базовые настройки,
которые есть у каждого драйвера - имя конечной таблицы, список полей в
таблице, и соответствующий список импортируемых полей. Ниже показано, как Вы можете добавить свои настройки для драйвера:
Поля настроек драйвера, отображаемые на
форме создания задачи, ничем не отличаются от других полей, добавляемых
на форму. Формат добавляемых полей подробно описан здесь: Форма - возможности В дальнейшем, сохраненный настройки драйвера буду использоваться при вызове драйвера из задачи или бекграунд-процесса. В
списке полей импорта, помимо названия полей, можно так же указывать имя
метода, который будет выполняться при заполнении соответствующего поля
таблицы. Имя поля должно заканчиваться круглыми скобками (например,
myOperation()), а имя метода, описанного в классе должно состоять из
field + myOperation() (см. ниже.) Предположим, вы импортируете RSS-ленту, но помимо данных из RSS вы хотите указать текущее время в формате Y-m-d H:i:s Укажем конечную таблицу news (имя таблицу указывается БЕЗ префикса. Имена полей будут header, body, date. Имена
импортируемые полей будут title, text, myOperation(). Здесь мы хотим
помещать в date значение, возвращаемое функцией fieldMyOperation. Теперь опишем эту функцию в нашем драйвере: В
нее передается объект oEntry, который является текущей строкой
импортируемых данных. Однако, сейчас он нам не нужен - нам достаточно
просто возвращать время в определенном формате.
Теперь, в поле date будет возвращаться текущая дата.
Вы
можете изменять поведение импорта, используя события, которые
вызываются при инициализации драйвера, подключении к источнику, чтению
данных, и т.п.
В минимуме, драйвер должен должен описывать методы doImport() и isImportResourceAvailable(). Ниже представлен пример абстрактного драйвера, который получает некие html данные по протоколу http, и затем парсит их при помощи парсера html.
|