|
|
Основные действияЛогика основных действий для редактирования данных заложена в ядре системы. Это несколько файлов в папке adm/includes/, которые описаны ниже. Они отвечают за базовые действия по управлению данными в административной части сайта. Это означает, что если создать модуль с простым содержимым, diafan.CMS автоматически подгрузит эти файлы и данными можно будет управлять, используя основные действия. В diafan.CMS предусмотрены следующие действия:
Этих действий обычно достаточно, чтобы управлять большинством наборов данных. Например, нужно создать модуль по управлению персоналом. Это будет таблица сотрудников с фамилиями. Создавая модуль, достаточно сделать таблицу сотрудников в БД, и базовый функционал сразу автоматически позволит: выводить список сотрудников, добавлять новых, редактировать имеющихся, удалять, сортировать, скрывать выборочных.
В файле модуля можно использовать как стандартный функционал действий, так и расширить и даже полностью переопределить на свои действия. Рассмотрим как это можно сделать. Формирование спискаПри открытии модуля вызывается функция show_module(), определенная в каждом классе администрирования модуля. В этой функции можно заложить свое представление страницы администрирования модуля, можно вызвать стандартную функцию, формирующую список элементов таблицы модуля:
Перед вызовом функции можно определить переменные класса
Настройки вывода списка закладываются в переменную В список можно добавить свои колонки. Для этого определяется массив Для каждого из полей можно определить пользовательскую функцию, которая будет выводить ячейку таблицы. Формат пользовательской функции: Редактирование, добавлениеЕсли в URL страницы передана переменная edit или addnew, то подключается функция edit_module() из файла adm/includes/edit.php. Функция генерирует форму редактирования на основе массива Функцию можно переопределить в классе модуля. Также дополнить редактирование полей своим представлением вывода. Для этого в классе модуля определяется функция Пользовательская функция вызывается всегда, если она определена, независимо от типа переменной, указанного в массиве Некоторые пользовательские функции редактирования полей определены в файле adm/includes/edit.php. Например, редактирование ЧПУ, сортировки, раздела сайта и пр. Их также можно переопределить в классе модуля. Некоторые модули, агрегируют информацию об элементах других модулей. И при редактировании последних, нужно чтобы связанная информация также редактировалась. Например, при редактировании новости нужно редактировать прикрепленные изображения и теги.
Для этого в модулях-подключения нужно создать файл modules/модуль/admin/модуль.admin.edit.php. В файле должен быть определен класс Модуль_admin_edit со статичной функцией edit или edit_config для файла настроек. string edit (object $th) – редактирует элементы модуля, связанные с другими элементами.
string edit_config (object $th) – редактирует настройку модуля для другого модуля.
Затем в основном модуле (в примере это модуль новости) в таблице Пример:
$this->variable_table['images'] = 'module'; СохранениеЕсли в URL страницы передана переменная save или savenew, то подключается функция save_module() из файла adm/includes/save.php. Функция сохраняет данные из формы на основе массива Функцию можно переопределить в классе модуля. Также дополнить сохранение полей своей обработкой. Для этого в классе модуля определяется функция Функция определяет:
Для определения маски обратитесь к разделу «Базы данных». Пользовательская функция вызывается всегда, если она определена, независимо от типа переменной, указанного в массиве Некоторые пользовательские функции редактирования полей определены в файле adm/includes/save.php. Например, время редактирования, сортировка, ЧПУ и пр. Их также можно переопределить в классе модуля. Некоторые пользовательские функции редактирования полей определены в файле adm/includes/edit.php. Например, редактирование ЧПУ, сортировки, раздела сайта и пр. Их также можно переопределить в классе модуля. Некоторые модули, агрегируют информацию об элементах других модулей. И при сохранении последних, нужно чтобы связанная информация также сохранялась. Например, при сохранении новости нужно сохранять информацию о ссылках в меню на новость.
Для этого в модулях-подключения нужно создать файл modules/модуль/admin/модуль.admin.save.php. В файле должен быть определен класс Модуль_admin_save со статичной функцией save или save_config для файла настроек. string save (object $th) – сохраняет элементы модуля, связанные с другими элементами.
string save_config (object $th) – сохраняет настройку модуля для другого модуля.
Затем в основном модуле (в примере это модуль новости) в таблице Пример:
$this->variable_table['menu'] = 'module'; Удаление, удаление в корзинуПри удалении элемента или нескольких элементов модуля подключается функция del_module() из файла adm/includes/del.php. Эту функцию можно переопределить в классе модуля. Кроме того, если в классе модуля определена функция Надо учитывать, что если элементы удаляются в корзину, то сопутствующие им элементы тоже должны быть удалены в корзину. Поэтому вместо прямого SQL запроса на удаление лучше использовать функцию del_or_trash_where, определенную в файле adm/includes/del.php. Пример:
При удалении товара нужно удалять его цены. Для этого в классе Shop_admin файла modules/shop/shop.admin.php определяем функцию: protected function delete($del_id, $trash_id) Некоторые модули, агрегируют информацию об элементах других модулей. И при удалении последних, нужно чтобы связанная информация также удалялась. Например, при удалении товара нужно удалять ссылку в меню на него и комментарии о товаре.
Для этого в модулях-подключения нужно создать файл modules/модуль/admin/модуль.admin.del.php. В файле должен быть определен класс Модуль_admin_del со статичной функцией delete. string delete (object $th, string $module_name, integer $element_id, [integer $trash_id = 0], [boolean $is_category = FALSE]) – удаляет элементы модуля, связанные с другими элементами.
Блокирование, разблокированиеПри удалении элемента или нескольких элементов модуля подключается функция act_module() из файла adm/includes/act.php. Эту функцию можно переопределить в классе модуля. Некоторые модули, агрегируют информацию об элементах других модулей. И при блокировании последних, нужно чтобы связанная информация также блокировалась. Например, при блокировании страницы сайта нужно блокировать пункт меню, связанный с ней.
Для этого в модулях-подключения нужно создать файл modules/модуль/admin/модуль.admin.act.php. В файле должен быть определен класс Модуль_admin_act со статичной функцией act. string delete (object $th, string $table, array $element_ids, integer $act) – блокирует / разблокирует элементы модуля, связанные с другими элементами.
СортировкаПри сортировки элементов подключается функция sort_module() из файла adm/includes/sort.php. Эту функцию можно переопределить в классе модуля. Обработка Ajax запросовНекоторые запросы требуют специальной обработки. Например, подгрузка списка дерева сайта при редактировании родителя страницы. Эта обработка происходит в файле adm/includes/ajax.php. Если нужно производить обработку Ajax запросов в модуле, то создается файл modules/модуль/admin/модуль.admin.ajax.php. В файле описывается класс Модуль_admin_ajax. Обработка данных производится в конструкторе модуля. Для того, чтобы система подключила файл, нужно отправить переменную Не понятно? Уточните |
|
© 2003 - 2012 гг. diafan.CMS версия 5.0 CMS для сайта визитки ООО "Диафан" (495)64-603-61, (3532)30-60-86 |
|

