Хук integrate_load_theme
Хук integrate_load_theme один из часто используемых хуков, вызываемый в конце подключения темы оформления SMF.
Расположение⚓︎
Как видим, хук не имеет параметров; в нем доступны для использования любые переменные, определенные до его вызова.
Назначение⚓︎
Этот хук вызывается после полной загрузки темы оформления, но до вывода контента страницы. Он идеально подходит для:
- Подключения дополнительных CSS и JavaScript файлов
- Загрузки языковых файлов модификаций
- Инициализации глобальных переменных
- Выполнения действий, требующих доступа к теме и настройкам форума
Дополнительная информация (из документации SMF)
Хук integrate_load_theme гарантирует, что все переменные темы ($settings, $context) и настройки форума уже загружены и доступны. Это отличает его от хука integrate_pre_load_theme, который вызывается до загрузки темы.
Важно
Избегайте использования этого хука для тяжелых операций, так как он выполняется на каждой странице форума и может повлиять на производительность.
Использование⚓︎
<?php
if (! defined('SMF'))
die('No direct access...');
class YourModName
{
// В этой функции подключаем хуки
public function hooks(): void
{
add_integration_function('integrate_load_theme', self::class . '::loadTheme#', false, __FILE__);
}
public function loadTheme(): void
{
global $context, $settings;
// Подключение языкового файла /Themes/default/languages/MyApplication.{язык пользователя}.php
loadLanguage('MyApplication');
// Подключение языкового файла /Themes/default/languages/MyApplication/.{язык пользователя}.php
loadLanguage('MyApplication/');
// Подключение произвольного CSS-файла в шапке страницы
$context['html_headers'] .= '
<link rel="stylesheet" type="text/css" href="' . $settings['default_theme_url'] . '/css/style.css" />';
// Подключение произвольного JS-файла в подвале страницы
$context['insert_after_template'] .= '
<script src="//code.jquery.com/jquery.min.js" type="text/javascript"></script>';
// Вызов произвольной функции
other_function();
// И другие нужные вам действия
}
}
Рекомендация
В SMF 2.1 для подключения CSS и JS файлов добавлены специальные функции.
Если в вашем приложении требуется что-то сделать перед подключением темы оформления, используйте вспомогательный хук integrate_pre_load_theme.