Перейти к содержанию

Хук integrate_pre_load_theme

Этот хук появился в SMF 2.1 и предназначен для переопределения идентификатора темы на пользовательских страницах.

Расположение⚓︎

Sources/Load.php

<?php

call_integration_hook('integrate_pre_load_theme', array(&$id_theme));

Sources/Theme.php

<?php

IntegrationHook::call('integrate_pre_load_theme', [&$id]);

Во входной переменной содержится идентификатор текущей темы оформления. Это может быть тема, заданная по умолчанию, либо тема, установленная внутри конкретного раздела, либо тема оформления для гостей.

Примечание

Под темой в данной статье подразумевается шаблон SMF. Не путайте с темами-топиками в разделах-досках.

Назначение⚓︎

Хук позволяет переопределить тему оформления перед её загрузкой, что полезно для создания пользовательских страниц или модов, требующих специфического дизайна.

Использование⚓︎

Как подключать хуки

<?php

if (! defined('SMF'))
    die('No direct access...');

class YourModName
{
    // Подключаем используемые хуки
    public function hooks(): void
    {
        add_integration_function('integrate_pre_load_theme', self::class . '::preLoadTheme#', false, __FILE__);
    }

    public function preLoadTheme(&$id): void
    {
        // Вручную указываем ID нужной нам темы оформления
        $id = 2;
        // var_dump($id); // Для отладки
    }
}

В примере выше мы вручную задали $id_theme = 2 и теперь на любой странице форума будет принудительно использоваться шаблон с соответствующим идентификатором.

Данный хук пригодится авторам модов и тем оформления, позволяя, например, быстро включать нужный шаблон, не заходя в настройки.

Комментарии