Администрирование модуля

Файл администрирования модуля – это файл modules/модуль/admin/имя_модуля.admin.php, в котором определен класс Имя_модуля_admin.

Если модуль имеет несколько частей, то административная часть модуля может содержать и другие файлы modules/модуль/admin/имя_модуля.admin.часть.php, где описан класс имя_модуля_admin_часть.

Класс администрирования модуля должен содержать как минимум две функции:

  • __construct – определяет переменные-настройки;

  • show_module – выводит главную страницу администрирования модуля.

В конструкторе модуля могуть быть определены переменные-настройки:

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.



Не понятно? Уточните