Powered By GitBook
Создание хуков - правка API через функции
Хук (Hook) - это PHP функция, которая перехватывает на себя выполнение заводских функций PHPShop API, дающая возможность "на лету" перехватывать данные и видоизменять их вывод, добавлять новые возможности, управлять настройками API.

Позиционировании активации в функции

Возможностью использования хука обладают 90% функций PHPShop. В таких функциях (методы классов) предусмотрено до 3 режимов включение хука (START, MIDDLE и END). Хук может быть активирован
    1.
    В начале функции - для активации использовать параметр роутера хука START
    2.
    В середине функции - для активации использовать параметр роутера хука MIDDLE
    3.
    В конце функции - для активации использовать параметр роутера хука END
Для определения размерности роутера смотрите справочную информацию по функциям. Использование роутера хука позволяет более точно подсоединяться к функциям и экономить ресурсы проекта на исключении повторяющихся элементах кода и зеркальных запросах к БД.

Использование роутера

Роутер позволяет координировать место активации хука. Чтобы не переписывать весь код функции для перехвата выборки из БД используется роутер MIDDLE, для полного перехвата функции в самом начале и отключение параллельного выполнения перехватываемой функции используется роутер START. Для модернизации результата итогового выполнения функции используется роутер END.
Пример использования роутера
1
/**
2
* Изменение сетки сопутствующих товаров, сетка товаров = 3
3
*/
4
function odnotip_hook($obj,$row,$rout) {
5
if($rout=='START') {
6
$obj->odnotip_setka_num=3;
7
$obj->line=true;
8
}
9
}
Copied!
Прерывание функции
Для полного перехвата дальнейшего выполнения функции, в самой функции должно быть условие прерывания (см. описание функций) и хук должен выдавать булевого значение '''true''' результатом выполнения.
1
/**
2
* Изменение сетки сопутствующих товаров, сетка товаров = 3
3
*/
4
function odnotip_hook($obj,$row,$rout) {
5
if($rout=='START') {
6
$obj->odnotip_setka_num=3;
7
$obj->line=true;
8
return true;
9
}
10
}
Copied!

Сравнение возможностей

Hook

    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 1yr ago