Файл запуска подключается в момент инициализации хака. Он отвечает за предварительные настройки хака и подготовку обработчиков.
Массив конфигурации
Файл инициализации хака должен заканчиваться возвратом массива, который содержит конфигурацию хака: функции запуска, обработчики доставки и рекламных сетей, задачи планировщика, API-функции.
Ключами этого массива будут названия соответствующих конфигураций. Значениями - массивы со списком файлов, функций или настроек. Если функция или файл представлены в единичном экземпляре, можно использовать строку вместо массива.
Доступные ключи:
init
- функция инициализации хака.api
- список файлов приложений для API.api-auth
- настройки авторизации для API-функций (всегда только массив).cron-1min
- список файлов для планировщика, выполняемого раз в минуту (быстрые задачи).cron-3min
- список файлов для планировщика, выполняемого раз в 3 минуты (задачи высокой длительности).cron-10min
- список файлов для планировщика, выполняемого раз в 10 минут (задачи средней длительности).cron-1day
- список файлов для планировщика, выполняемого раз в сутки (очень долгие задачи)tpl
- переопределение системных шаблонов.lib
- переопределение системных библиотек.delivery
- обработчики служб доставки.adv
- обработчики рекламных сетей.
Пример возвращаемого массива:
return [ 'init' => [ 'hack_proxy_init'], 'api' => [ 'proxy', 'wm' ], 'api-auth' => [ [ 'proxy', [ 'check', 'list', 'add', 'del' ], [ 'wm', 'getproxy' ] ], 'cron-3min' => [ 'checker' ], ];
Функция инициализации
Сразу после загрузки всех модулей, система запускает их функции инициализации.
В задачи функции входит подготовка всех обработчиков, которые используются в системе. Не рекомендуется при инициализации совершать какие-либо сложные действия.
Пример функции инициализации:
function hack_proxy_init( $core ) { $core->handle( 'modules', 'hack_proxy_route' ); $core->handle( 'menu', 'hack_proxy_menu' ); }
Обработчики и фильтры
Инструментарий фильтров и обработчиков позволяет реализовать вызов функций и изменение некоторых данных на лету.
Новый обработчик добавляется функцией handle:
$core->handle( $place, $function );
Где $place
- место обработчика, а $function
- название вызываемой функции.
Например:
$core->handle( 'modules', 'hack_proxy_route' );
В системе существует множество точек, к которым можно прицепиться. Вот некоторые наиболее полезные из них:
modules
- место для установки функций роутинга, выполняется перед системным роутингом.actions
- место для подготовительных действий, выполняется прямо перед обработчикам modules.menu
- фильтр, готовящий навигационное меню. Принимает меню вторым параметром и должен возвращать дополненный вариант.newmenu
- фильтр постобработки меню. Выполняется над готовыми массивом меню.header
- выполняется перед выводом верхнего блока сайта, после подготовки блока.footer
- выполняется перед выводом подвала сайта, после подготовки блока.medialibs
- фильтр списка библиотек для загрузки файлов.
Уточняйте наличие нужного вам фильтра или обработчика у технической поддержки. Новые фильтры могут быть добавлены по вашему запросу, если это будет целесообразно.
Пример готового файла запуска
Вот так бы выглядел файл запуска для хака с названием proxy
, у которого есть несколько разделов, API с авторизацией и задачи планировщика.
<?php // Startup function hack_proxy_init( $core ) { $core->handle( 'modules', 'hack_proxy_route' ); } // Routing function hack_proxy_route( $core ) { switch ( $core->app->div ) { case 'proxy-list': $core->hack->proxy->mod( 'listing', 'hack_proxy_list' ); case 'proxy-check': $core->hack->proxy->mod( 'listing', 'hack_proxy_check' ); case 'proxy-stats': $core->hack->proxy->mod( 'stats’, 'hack_proxy_stats' ); } } // Configuration return [ 'init' => [ 'hack_proxy_init'], 'api' => [ 'proxy' ], 'api-auth' => [ [ 'proxy', [ 'check', 'list', 'add', 'del' ], ], 'cron-3min' => [ 'checker' ], 'cron-1day' => [ 'stats' ], ];