Если вы хотите вставить целый блок HTML, а не простое значение, лучше создать свой собственный шаблон.
Шаблоны обычно создаются в функции _install()
. Они могут быть созданы следующим образом:
global $db; $template = '<strong>{$hello_world}</strong>'; $insert_array = array( 'title' => 'hello_world_template', 'template' => $db->escape_string($template), 'sid' => '-1', 'version' => '', 'dateline' => time() ); $db->insert_query('templates', $insert_array);Шаблон можно удалить в функции
_uninstall()
с помощью:
$db->delete_query("templates", "title = 'hello_world_template'");Как только ваш плагин был установлен, вы должны теперь видеть шаблон, который вы создали в AdminCP по пути:
Templates & Style > Templates > Global Templates
Чтобы заменить переменную, вставленную в другой шаблон, пользовательским шаблоном, необходимо выполнить следующие действия из функции hook:
global $templates, $myVar; $hello_world = 'foobar'; eval('$myVar = "' . $templates->get('hello_world_template') . '";');Обратите внимание, что
$hello_world
не обязательно должен быть глобальным, пока не указан в вашем пользовательском шаблоне.
Если все работает правильно, то вы должны увидеть вверху вашей страницы следующее:
<strong>hello_world</strong>
Большинство плагинов требуют некоторых изменений в интерфейсе, как правило, для отображения дополнительной информации.
Переменную можно легко вставить в шаблон с помощью функции find_replace_template sets()
, которая ищет строку и заменяет ее в данном шаблоне.
Для этой цели вы обычно заменяете строку на саму себя плюс свою переменную, например:
require_once MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets( "index", "#" . preg_quote('<body>') . "#i", '<body>{$myVar}' );Это вставит
{$myVar}
после <body> в index
шаблона.
Важно убедиться, что строка, которую вы ищете, вряд ли изменится между шаблонами, иначе пользователям придется вручную редактировать свои шаблоны, чтобы вставить переменную, если строка не существует в их шаблоне.
Глобальные переменные доступны из шаблонов, поэтому самый простой способ получить доступ к переменной в функции-обработчике из шаблона - сделать ее глобальной:
global $myVar; $myVar = 'Hello World!';Это вставит значение
Hello World!
, где переменная {$myVar}
находится в шаблоне. $myVar
может, конечно, быть любым значением, например, динамически сгенерированным или из запроса к базе данных.
Альтернативным решением является изменение существующей глобальной переменной, такой как $user
. Например, можно вставить {$user ['favorite_colour']}
в шаблон, а затем выполнить следующие действия в функции hook:
global $user; $user['favorite_colour'] = 'Blue';— Vladimir 26.12.2018 17:19