Зачем нужны хуки?
Принцип работы хуков:
Хук - Вставка дополнительного кода в исходный скрипт, с целью изменить его функционл.
1. В Компонентах, а именно в их моделях или шаблонах, могут быть вызовы хуков, как админпанели, так и пользовательской части сайта
2. Вызов хука осуществляется командой(вызов функции) get_hook('template.form', $variablesArray); где template.form название PHP файла(template.form.php), который будет портирован в место вызова хука.
3. При вызове хука также учитывается контекст откуда он вызывается, в частности это: пользовательская часть сайта или админ панель, компонент, а также секция
Структура расположения файлов хуков
./hooks/
./hooks/panel/component/
./hooks/theme/levi/component/
По сути, все директории и их структура внутри папки ./hooks/ идентичны основным корневым дерикториям ./theme/levi/ (для пользовательской части) и ./partner/(для админпанели)
Внутри папки хука, для компонента Корзины (basket), будет например такая структура:
./hooks/theme/levi/component/basket/
./hooks/theme/levi/component/basket/.model.php
./hooks/theme/levi/component/basket/template.form.php
При этом, файл ./hooks/theme/levi/component/basket/.model.php будет подгружаться всегда, автоматически при переходе на страницу с данным компонентом.
В нем можно разместить разные обработчики и вообще любой код, который нужно выполнить при переходе в компонент Корзина.
Код из файла ./hooks/theme/levi/component/basket/template.form.php, можно подкрузить в Компонент, только вставкой в него функции вызова get_hook('template.form');
При этом, этот файл может называться как угодно, еаименование template.form.php взято для примера, и для удоства понимания,
к какой части компонента относиться код содержащийся в данном файле, в нашем случае речь о вставке кода в HTML шаблон, а именно добавление полей в форму,
по этому и название файла такое.
Для кода хуков рекомендуется использовать два названия файлов содержащих код:
model.example.php - для хуков используемых в моделях (модель это основной код компонента, скрипт ./theme/levi/component/basket/.model.php)
template.example.php - для хуков используемых в шаблонах (шаблон это файл содержаший HTML код страницы компонента, ./theme/levi/component/basket/default.php)
4. Вызов хука это функция get_hook(string $name, array $variables), которая подгружает содержимое PHP скрипта по адресу:
./hooks/theme/levi/component/НАЗВАНИЕ_КОМПОНЕНТА/НАЗВАНИЕ_ХУКА.php
функция может подгружать код, перехватывающий глабальные переменные для их измнения и так далее
Вынкция также возвращает результат выполнения, если есть.