Администрирование модуляФайл администрирования модуля – это файл modules/модуль/admin/имя_модуля.admin.php, в котором определен класс Имя_модуля_admin.
Если модуль имеет несколько частей, то административная часть модуля может содержать и другие файлы modules/модуль/admin/имя_модуля.admin.часть.php, где описан класс имя_модуля_admin_часть.
Класс администрирования модуля должен содержать как минимум две функции:
В конструкторе модуля могуть быть определены переменные-настройки:
1. Название таблицы:
public $table = 'имя_таблицы_в_БД';
2. Переменные для редактирования:
$this->variable_table – массив с названием переменных (как правило, это поля из таблицы в БД) и указание их типов для соответствующего редактирования. Определены следующие типы:
- text – строка;
- password – пароль;
- numtext – число;
- floattext – число с плавающей точкой;
- checkbox – переменная с двумя значениями (1,0);
- select – список (для использования типа необходимо определить массив
$this->select["переменная"] или$this->select_arr["переменная"]);
- date – дата (значение выводится в формате dd.mm.yyyy, сохраняется в формате UNIX);
- datetime – дата и время (значение выводится в формате dd.mm.yyyy hh:mm, сохраняется в формате UNIX);
- textarea – текстовое поле типа textarea;
- editor – текстовое поле с визуальным редактором;
- none – при редактировании не выводится, но значение сохраняется (можно использовать с пользовательской функцией);
- module – обозначаются поля, к которым подключены другие модули;
- function – обозначаются поля, к которым подключены пользовательские функции (подключаются также к любому другому типу кроме module);
- hr – выводит горизонтальную полосу на странице редактирования, при сохранении не учитывается;
- disabled – текстовое поле, которое невозможно редактировать.
Формат:
$this->variable_table = array( 'переменная' => 'тип', … );
Массив можно делить на вкладки для этого надо определить переменную:
$this->config_module["tab_card"] = 1;
Тогда формат массива $this->variable_table должен быть следующим:
$this->variable_table = array( "вкладка" => array( "переменная" => "тип", … ), … );
Названия переменных для отображения пользователю должны быть определены в файле локализации (папка language) в виде констант в формате:
_ADMIN_МОДУЛЬ_ПЕРЕМЕННАЯ или _ADMIN_ПЕРЕМЕННАЯ (для использования в нескольких модулях).
Для конфигурации модуля:
_ADMIN_МОДУЛЬ_CONFIG_ПЕРЕМЕННАЯ или _ADMIN_ПЕРЕМЕННАЯ_CONFIG (для использования в нескольких модулях).
Можно использовать подсказки:
_ADMIN_МОДУЛЬ_ПЕРЕМЕННАЯ_HELP или _ADMIN_ПЕРЕМЕННАЯ_HELP (для использования в нескольких модулях).
Для конфигурации модуля:
_ADMIN_МОДУЛЬ_CONFIG_ПЕРЕМЕННАЯ_HELP или _ADMIN_ПЕРЕМЕННАЯ_CONFIG_HELP (для использования в нескольких модулях).
Для полей с типом editor (визуальный редактор) можно настроить высоту поля с помощью переменной $this->editor_height.
Формат: $this->editor_height = array('поле' => 'высота в px');
3. Справочники:
Если в массиве $this->variable_table определены переменные с типом select, то для них необходимо определить массив $this->select["переменная"] или $this->select_arr["переменная"]. Формат:
1. Использование значений из таблицы:
$this->select["название_переменной"] = array( "название таблицы", "название поля значения", "название поля для отображения", "значение списка при добавлении элемента", "Отображение для пустого поля (если значение не задано, пустого элемента в списке не существует", "условие при sql запросе", "поле для организации вложенности (если вложенности не существует, значение пустое)" );
2. Массив содержит значения для списка:
$this->select_arr["название_переменной"] = array( "значение" => "отображение", … );
4. Переводимые поля:
$this->language_names — массив переводимых полей
Формат:
$this->language_names = array( "название_переменной", … );
5. Настройки отображения:
$this->config_module – настройка отображения списка значений:
- act – отображение кнопки быстрой публикации (при наличии поля act);
- del – отображение кнопки удаления;
- date – отображение даты в формате dd.mm.yyyy (при наличии поля data), сортировка по дате;
- datetime – отображение даты и времени в формате dd.mm.yyyy hh:ii (при наличии поля data), сортировка по дате;
- prior – приоритетная сортировка по полю prior;
- parent – использовать вложенность элементов (при наличии поля parent_id);
- order – возможность сортировки элементов (при наличии поля sort);
- view – просмотр страницы на сайте;
- menu – показывать страницу в меню;
- nopage – показывать все элементы (без разбивки на страницы);
- image – показывать изображение элемента;
- element – использование категорий в модуле (отдельная таблица {таблица_category}); часть с элементами;
- element_multiple – элемент может быть прикреплен к нескольким каегориям;
- element_site – использование разделов (если модуль может быть подключен к нескольким станицам);
- category – использование категорий в модуле (отдельная таблица {таблица_category}); часть с категориями;
- category_flat – категории элементов модуля не содержат вложенностей;
- category_rel – работают вместе с таблицей {модуль_category_rel};
- link_to_element – основная ссылка ведет к списку элементов, принадлежащих категории;
- trash – использование корзины для удаления элементов;
- no_out – не отображать кнопку «Сохранить и выйти»;
- tab_card – использование вкладок;
- search_name – форма поиска по названию;
- config – файл настроек модуля.
Формат:
$this->config_module = array( 'переменная' => 1, … );
6. Дополнительные поля для формирования списка элементов:
$this->config_other_row – массив названий дополнительных полей для отображения.
Формат:
$this->config_other_row = array( 'переменная', … );
Для отображения дополнительных полей возможно определение пользовательских функций формата: other_row_переменная($row), где $row – массив значений для текущего элемента. Пример использования модули modules/rating/rating.admin.php, modules/users/users.admin.php.
7. Дополнительные поля при редактировании элемента:
Для определения некоторых переменных как дополнительных при редактировании элемента используется массив $this->variable_other.
Формат:
$this->variable_other = array( 'переменная' => 1, … );
Для возможности прикрепления модуля к нескольким страницам необходимо вставить следующий код:
$this->variable_table['cat_id'] = 'select'; $this->select["cat_id"] = array( "site", "id", "name", $this->diafan->catid, "", "act='1' and addmodule='".$this->table."'" ); $this->config_module['element_site'] = 1;
Если отображение одного поля зависит от значения другого, то используются массив $this->show_tr_click_checkbox.
Формат:
$this->show_tr_click_checkbox = array( "название_главной_переменной" => array( 'название зависимой переменной', … ), … );
Главная переменная должна иметь тип checkbox. Пример использования файл modules/faq/faq.admin.config.php.
Не понятно? Уточните
|