529  /  531
Нашли ошибку? Выделите мышкой и нажмите Ctrl+Enter

Использование пользовательских событий и функций для кастомизации

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

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

В эти события передаются исходные параметры и результат, получаемый в модуле. Благодаря этому вы можете сделать одно из следующих действий:

  1. Полностью изменить логику работы функции через исходные параметры.
  2. Внести точечные изменения через результат работы функции.

Пример использования пользовательского события

Рассмотрим функцию GetQuantityArray, которая находится в файле bitrix/modules/aspro.max/classes/general/CMax.php.

Функция содержит событие, которое мы выделили на скриншоте ниже.


Через это событие можно модифицировать выводимый результат.

Чтобы событие сработало, его нужно зарегистрировать в файле /bitrix/php_interface/init.php, используя функцию 1С-Битрикс AddEventHandler. Подробнее об этом читайте в документации платформы.

Для нашего метода из примера получится следующее:

AddEventHandler('aspro.max', 'OnAsproGetTotalQuantityBlock', array('\Aspro\Functions\CAsproMaxCustom', 'OnAsproGetTotalQuantityBlockHandler'));


После регистрации события новую логику работы можно описать внутри класса CAsproMaxCustom в файле bitrix/modules/aspro.max/lib/functions/CAsproMaxCustom.php.


При этом в качестве названия метода нужно указать OnAsproGetTotalQuantityBlockHandler.

Пример использования пользовательской функции

Есть методы, где можно использовать пользовательскую функцию. В этом случае не потребуется регистрация события в файле /bitrix/php_interface/init.php.

Например, для метода getMenuChildsExt есть следующая функция.


Чтобы использовать эту пользовательскую функцию, нужно прописать ее внутри класса CAsproMaxCustom в файле bitrix/modules/aspro.max/lib/functions/CAsproMaxCustom.php. 

При этом в конце названия функции необходимо добавить CAsproMax. То есть если название было getMenuChildsExt, то должно стать getMenuChildsExtCAsproMax. 

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