Иногда бывает полезно создать новую, выделенную страницу для плагина. Возможно, в противном случае было бы слишком много ссылок, необходимых для получения различных элементов управления/настроек для вашего плагина, или, может быть, больше свободы в настройке дизайна пользовательского интерфейса для вашего плагина. В этом случае создание выделенной страницы будет жизнеспособным решением. Есть два способа сделать это.
Использование misc.php
позволяет добавлять пользовательские «страницы» без создания нового файла PHP самостоятельно, и позволяет иметь дело только со стандартными файлами ядра и файлом плагина. Однако, если вам нужна еще большая гибкость, вы можете использовать отдельный файл для достижения своей цели.
Простой способ добавить пользовательскую страницу через плагин - использовать хук misc_start
.
$plugins->add_hook('misc_start', 'my_action'); // In the body of your plugin function my_action() { global $mybb, $templates, $lang, $header, $headerinclude, $footer; if($mybb->get_input('action') == 'myaction') { // Do something, for example I'll create a page using the hello_world_template // Add a breadcrumb add_breadcrumb('My Action', "misc.php?action=myaction"); $hello_world = 'This text will appear on the page'; eval('$sections = "' . $templates->get('hello_world_template') . '";'); // Using the misc_help template for the page wrapper eval("\$page = \"".$templates->get("misc_help")."\";"); output_page($page); } }Это создает страницу, красиво оформленную с верхним и нижним колонтитулом шаблона, доступную путем перехода к
misc.php?действие=myaction
.
Вы можете добавить свой собственный шаблон страницы вместо использования misc_help
.
Если настраиваемая страница имеет много функциональных возможностей, можно использовать отдельный файл, например my_plugin.php
, помещенный в корневой каталог MyBB.
Процесс почти тот же, кроме размещения вашей функциональности в файл my_plugin.php
, а не в хук-функции:
<?php // Set some useful constants that the core may require or use define("IN_MYBB", 1); define('THIS_SCRIPT', 'my_plugin.php'); // Including global.php gives us access to a bunch of MyBB functions and variables require_once "./global.php"; // Only required because we're using misc_help for our page wrapper $lang->load("misc"); // Add a breadcrumb add_breadcrumb('My Page', "my_plugin.php"); $hello_world = 'This text will appear on the page'; eval('$sections = "' . $templates->get('hello_world_template') . '";'); // Using the misc_help template for the page wrapper eval("\$page = \"".$templates->get("misc_help")."\";"); // Spit out the page to the user once we've put all the templates and vars together output_page($page); ?>Вы можете открыть это, перейдя к
my_plugin.php
. Вы также можете запустить оператор switch на $mybb→get_input('action')
для обслуживания нескольких действий на вашей пользовательской странице.