1

Тема: Как добавить свою страницу (подменю) в панель администратора

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

В данном примере представим что у нас уже имеется каркас расширения. Информация по созданию расширений находиться здесь.

Для начала нужно определиться в какой главный пункт меню вы хотели бы добавить свой новый подпункт.
Основные пункты админ меню, их 5:
Начало   Настройки   Пользователи   Управление   Расширения
У каждого меню есть своя определенная константа. Вот они:

define('FORUM_PAGE_SECTION', 'start'); //Начало
define('FORUM_PAGE_SECTION', 'settings');  //Настройки
define('FORUM_PAGE_SECTION', 'users');  //Пользователи
define('FORUM_PAGE_SECTION', 'management');  //Управление
define('FORUM_PAGE_SECTION', 'extensions');  //Расширения

Давайте попрактикуемся и добавим страницу/подменю в главное админ меню Настройки

Создадим страницу, на которой мы смогли бы загружать свои изображения в заранее определенную директорию. Назовем ее Images

Итак, отрываем файл manifest.xml и добавим новый хук:

    <hook id="ca_fn_generate_admin_menu_new_sublink"><![CDATA[
if ($forum_user['g_id'] == FORUM_ADMIN && FORUM_PAGE_SECTION == 'settings')
{
  $forum_url['pan_options'] = $ext_info['path'].'/options.php';
  //Если ссылок много или у вас своя УРЛ схема то лучше все ссылки собрать в отдельно файле и затем подключить его.
  //include $ext_info['path'].'/url/Default.php';
  
  $forum_page['admin_submenu']['pan_options'] = '<li class="'.((FORUM_PAGE == 'admin-pan_options') ? 'active' : 'normal').((empty($forum_page['admin_submenu'])) ? ' first-item' : '').'"><a href="'.forum_link($forum_url['pan_options']).'">Настройки</a></li>';
}
    ]]></hook>

$forum_user['g_id'] == FORUM_ADMIN - вкладка/подменю видно будет только админу
FORUM_PAGE == 'admin-pan_options' - Определенная константа вашей новой страницы

Если вам долго не отвечают, пишите автору темы в личку или на Email.

2 (изменено: PunBB, 2016.05.21 23:13)

Re: Как добавить свою страницу (подменю) в панель администратора

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

Чтобы подключить файл, создадим УРЛ схему расширения, если она не создана.

1 Создадим файл Default.php в папке url. Путь /url/Default.php

В манифест добавим хук для подключения схемы:

    <hook id="co_modify_url_scheme"><![CDATA[
require $ext_info['path'].'/url/Default.php';
    ]]></hook>

Теперь в файл можно добавлять ссылки расширения. Для подключения options.php в файл ссылок добавим строку

<?php

$forum_url['pan_options'] = 'extensions/'.$ext_info['id'].'/options.php';
Если вам долго не отвечают, пишите автору темы в личку или на Email.

3

Re: Как добавить свою страницу (подменю) в панель администратора

Теперь заполним файл options.php содержимым:

<?php
//Определяем корневую директорию
if (!defined('FORUM_ROOT'))
  define('FORUM_ROOT', '../../');
require FORUM_ROOT.'include/common.php';
require FORUM_ROOT.'include/common_admin.php';

//Подключаем языковую локализацию
// Load the admin.php language files
require FORUM_ROOT.'lang/'.$forum_user['language'].'/admin_common.php';
require FORUM_ROOT.'lang/'.$forum_user['language'].'/admin_index.php';
require FORUM_ROOT.'lang/'.$forum_user['language'].'/admin_settings.php';

//запрещаем просмотр всем кроме админа
if ($forum_user['g_id'] != FORUM_ADMIN)
  message($lang_common['No permission']);

//строка состояния
$forum_page['crumbs'] = array(
  array($forum_config['o_board_title'], forum_link($forum_url['index'])),
  array($lang_admin_common['Settings'], forum_link($forum_url['admin_settings_setup'])),
  array('Моя страница', forum_link($forum_url['pan_options']))
);

//Основное меню
define('FORUM_PAGE_SECTION', 'settings');
//подменю
define('FORUM_PAGE', 'admin-pan_options');
//Область хедера
require FORUM_ROOT.'header.php';

//Сам контент страницы
// START SUBST - <!-- forum_main -->
ob_start();

?>
<!--//

Внимание! Здесь ваш код и параметры конфигурации

-->
<?php

$tpl_temp = forum_trim(ob_get_contents());
$tpl_main = str_replace('<!-- forum_main -->', $tpl_temp, $tpl_main);
ob_end_clean();
// END SUBST - <!-- forum_main -->
//подвал форума
require FORUM_ROOT.'footer.php';

Думаю здесь все понятно, для этого написал некоторые комментарии.
После всех процедур переустановите расширение, если было установлено.

Успеха! Default/br

Если вам долго не отвечают, пишите автору темы в личку или на Email.