Всем привет. Появилась необходимость в экспорт/импорт добавить кастомное поле. Кто-либо уже проделывал такие манипуляции со своим сайтом. Может есть какой порядок действий? Ну или подскажите куда копать.
На старом импорте делал, все достаточно не сложно. Если не ошибаюсь в admin.import.config поле прописать и save функцию добавить
Новый импорт/экспорт был написан так, чтобы максимально сохранить действующий на тот момент старый механизм импорта/экспорта. Так что сложностей не должно быть.
Основные классы Импорта/экспорта описаны в модуле service:
- класс импорта - modules/service/service.express.import.php
- класс экспорта - modules/service/service.express.export.php
В этих файлах описаны функции, которые распространяются на все модули.
Для того, чтобы организовать импорт/экспорт для любого модуля, достаточно создать, например, для модуля shop следующие файлы:
- класс импорта для модуля shop - modules/shop/shop.express.import.php
- класс экспорта для модуля shop - modules/shop/shop.express.export.php
В указанных файлах файлах можно изменить поведение общих функций.
В качестве примера просто посмотрите следующие файлы:
- modules/news/news.express.import.php
- modules/news/news.express.export.php
- modules/clauses/clauses.express.import.php
- modules/clauses/clauses.express.export.php
И так, например, нужен импорт для модуля ab. Для этого кидаем два файла в директорию modules/ab/:
- modules/ab/ab.express.import.php
- modules/ab/ab.express.export.php
Содержание файла modules/ab/ab.express.import.php:
/**
* Ab_express_export
*/
class Ab_express_export extends Service_express_export
{
}
Этого достаточно, чтобы организовать импорт экспорт модуля ab. Все остальные изменения в этих файлах будут связаны лишь с добавлением нестандартный полей, которые свойственны только этому модулю. Примеры в файлах:
Цитата
В качестве примера просто посмотрите следующие файлы:
- modules/news/news.express.import.php
- modules/news/news.express.export.php
- modules/clauses/clauses.express.import.php
- modules/clauses/clauses.express.export.php
Есть еще один обязательный штрих.
В основной таблице модуля должны присутствовать поля: import, import_id.
Для этого дополняем файл modules/ab/ab.install.php
Код
/**
* @var array таблицы в базе данных
*/
public $tables = array(
array(
"name" => "ab",
"comment" => "Объявления",
"fields" => array(
...
array(
"name" => "import",
"type" => "ENUM( '0', '1' ) NOT NULL DEFAULT '0'",
"comment" => "элемент только что импортирован: 0 - нет, 1 - да",
),
array(
"name" => "import_id",
"type" => "VARCHAR(100) NOT NULL DEFAULT ''",
"comment" => "собственный идентификатор элемента при импорте",
),
...
),
...
),
...
);
Далее жмем кнопку восстановления структуры БД в CMS, чтобы поля автоматом появились в таблицах модуля. Сбрасываем кеш сайта. И всё. Смотрим, что получилось: можем импортировать/экспортировать стандартные поля. Если нужно что-то добавить, то смотрим примеры.
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.