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

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

Данный материал является вспомогательным для раздела Список хуков. Здесь рассмотрены оптимальные варианты подключения и вызова хуков в модификациях для SMF.

Основы⚓︎

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

В SMF 2.1 появилась возможность указывать используемые хуки непосредственно в package-info.xml:

<install for="2.1.*">
    <require-file name="Class-YourModName.php" destination="$sourcedir">Core file</require-file>
    <hook hook="integrate_pre_load" function="YourModName::hooks#" file="$sourcedir/Class-YourModName.php" />
</install>

<uninstall for="2.1.*">
    <hook hook="integrate_pre_load" function="YourModName::hooks#" file="$sourcedir/Class-YourModName.php" reverse="true" />
    <remove-file name="$sourcedir/Class-YourModName.php">OK</remove-file>
</uninstall>

Примечание

Символ решётки (#) указывает на использование нестатического метода класса. Хотите работать со статическими методами — убирайте решётку.

Название файла — Class-YourModName.php — выбираете сами, в зависимости от названия мода.

<?php

class YourModName
{
    public function hooks(): void
    {
        // Обратите внимание на решётку после названия метода
        add_integration_function('НАЗВАНИЕ_ХУКА', self::class . '::НАЗВАНИЕ_МЕТОДА#', false);
    }

    public function НАЗВАНИЕ_МЕТОДА(/* параметры, если есть */)
    {
        // Ваш код
    }
}

Скачивайте шаблон для создания модификаций, меняйте код на свое усмотрение, творите.

Шаблон модификации для SMF 2.1

Комментарии