Создание хуков - правка API через функции
Хук (Hook) - это PHP функция, которая перехватывает на себя выполнение заводских функций PHPShop API, дающая возможность "на лету" перехватывать данные и видоизменять их вывод, добавлять новые возможности, управлять настройками API.
Возможностью использования хука обладают 90% функций PHPShop. В таких функциях (методы классов) предусмотрено до 3 режимов включение хука (START, MIDDLE и END). Хук может быть активирован
- 1.В начале функции - для активации использовать параметр роутера хука
START
- 2.В середине функции - для активации использовать параметр роутера хука
MIDDLE
- 3.В конце функции - для активации использовать параметр роутера хука
END
Для определения размерности роутера смотрите справочную информацию по функциям. Использование роутера хука позволяет более точно подсоединяться к функциям и экономить ресурсы проекта на исключении повторяющихся элементах кода и зеркальных запросах к БД.
Роутер позволяет координировать место активации хука. Чтобы не переписывать весь код функции для перехвата выборки из БД используется роутер
MIDDLE
, для полного перехвата функции в самом начале и отключение параллельного выполнения перехватываемой функции используется роутер START
. Для модернизации результата итогового выполнения функции используется роутер END
.Пример использования роутера
/**
* Изменение сетки сопутствующих товаров, сетка товаров = 3
*/
function odnotip_hook($obj,$row,$rout) {
if($rout=='START') {
$obj->odnotip_setka_num=3;
$obj->line=true;
}
}
Прерывание функции
Для полного перехвата дальнейшего выполнения функции, в самой функции должно быть условие прерывания (см. описание функций) и хук должен выдавать булевого значение '''true''' результатом выполнения.
/**
* Изменение сетки сопутствующих товаров, сетка товаров = 3
*/
function odnotip_hook($obj,$row,$rout) {
if($rout=='START') {
$obj->odnotip_setka_num=3;
$obj->line=true;
return true;
}
}
- 1.Перехват функций API внешней части
- 2.Перехват функций API административной части
- 3.Поддержка режима инсталляции (включение/выключение)
- 4.Поддержка персональной БД для настроек
- 5.Защита от изменений при обновлении при условии уникальности имени модуля
- 6.Размещение в
/phpshop/modules/имя модуля
Design Hook
- 1.Перехват функций API внешней части
- 2.Автоматическая активация
- 3.Защита от изменений при обновлении
- 4.Размещение в
/phpshop/templates/имя шаблона/php
1C Hook
- 1.Перехват функции 1С-Синхронизации
- 2.Поддержка режима инсталляции (включение/выключение)
- 3.Размещение в
/1cManager/hook
Last modified 2yr ago