1. aspro.ru
  2. Аспро: Максимум
  3. Для веб-разработчиков
  4. Модификация кода решений
  5. Использование пользовательских событий и функций для кастомизации

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


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

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

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

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

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

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

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

0a7121ac-7b63-11f1-8fe4-fa163e2ff576

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

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

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

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

4ef12869-7b5d-11f1-8fe4-fa163e2ff576

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

726f521b-7b61-11f1-8fe4-fa163e2ff576

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

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

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

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

51c893ca-7b5d-11f1-8fe4-fa163e2ff576

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

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

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

726f521b-7b61-11f1-8fe4-fa163e2ff576
Предыдущая статья Добавление кастомизированного переключателя языков
Следующая статья Поддержка PWA