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' - Определенная константа вашей новой страницы

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

Re: Как создать и подключить свою URL схему

После переустановки расширения, у вас появиться новое меню и ссылка ведущая в неизвестность, так как не создан файл 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';

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';

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

Успеха! заполним файл options php содержимым определяем корневую директорию defined forum root define require include common admin подключаем язы фото PunBB