Часть функционала готовых решений Аспро хранится в файлах модуля. Менять код в них не рекомендуется, поскольку при установке обновления шаблона внесенные доработки не сохранятся. Чтобы этого избежать, в модуле мы добавили пользовательские события и функции. В статье расскажем, как их использовать для кастомизации решения.
В функциях решения, которые содержат HTML-код, вызываются пользовательские события. Как правило, эти события расположены в конце функции, но могут встречаться и в других местах. Благодаря им можно вносить изменения.
В эти события передаются исходные параметры и результат, получаемый в модуле. Благодаря этому вы можете сделать одно из следующих действий:
Рассмотрим функцию 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.
При таком варианте использовать результат работы метода нельзя. В пользовательской функции есть только исходные параметры, а манипуляций с ними нет. Поэтому логику работы функции нужно настраивать самостоятельно.