Сайт разработчика Diafan.CMS

Вход на сайт

Добавление собственного раздела в левое меню админ панели Diafan

18 октября 2013 г.

Задача: Добавить раздел в левом меню панели администратора Diafan.

Входные данные:

Файл: /adm/includes/theme.php

/**
* Выводит меню
*
* @return boolean true
*/
private function show_menu() {
$groups = array (
1 => $this->diafan->_('Контент'),
4 => $this->diafan->_('Интернет магазин'),
2 => $this->diafan->_('Интерактив'),
3 => $this->diafan->_('Сервис'),
5 => $this->diafan->_('Настройки') );
...

Файл: /modules/adminsite/admin/adminsite.admin.php

/**
* @var array значения списков
*/
public $select_arr = array(
'group_id' => array(
1 => 'Контент',
4 => 'Интернет магазин',
2 => 'Интерактив',
3 => 'Сервис',
5 => 'Настройки',
),
);

Можно отредактировать эти участки кода добавив по 1 строчке. Выделив в массивах ещё по 1 элементу значениями которых будет имя создаваемого раздела.

Но каковы шансы, что после очередного обновления всё не полетит к чертям и как сильно это аукнется непонятно. Поэтому будем использовать крутую фишку Diafan.CMS — кастомизацию.

Решение:

Сделаем кастомизацию согласно официальной документации. По началу ни тот ни другой файл не хотели кастомизироваться из за неправильно составленных регулярных выражений для разбора php файлов RegEx, но в итоге после ряда тестов совместными усилиями фишка кастомизации начала работать как надо. Итак смотрим что получилось.

Создаём 2 файла

Файл: /adm/includes/theme.custom.php

...
replace private function show_menu() {
    $groups = array ( 1 => $this->diafan->_('Контент'),
                      4 => $this->diafan->_('Интернет магазин'),
                      2 => $this->diafan->_('Интерактив'),
                      3 => $this->diafan->_('Сервис'),
                      5 => $this->diafan->_('Настройки')
                      6 => $this->diafan->_('Новая группа')
    );
...

и

Файл: /modules/adminsite/admin/adminsite.admin.custom.php

...
replace public $select_arr = array(
    'group_id' => array(
        1 => 'Контент',
        4 => 'Интернет магазин',
        2 => 'Интерактив',
        3 => 'Сервис',
        5 => 'Настройки',
        6 => 'Новая группа'
    ),
);

! Полный текст смотрите в файлах.

А теперь самое интересное это не будетработать если не будет модифицирована таблица базы данных adminsite

ALTER TABLE `[ваш префикс]_adminsite` CHANGE `group_id` `group_id` ENUM( '1', '2', '3', '4', '5', '6' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1'

Честно сказать, для того чтобы понять почему упорно не хочет сохранятся group_id пришлось перелопатить ещё несколько файлов :)

P.S. Кастомизация работает, не бойтесь использовать. Проверено на личном опыте.

Теги: Diafan.CMS