- Аспро: Премьер
- Аспро: Лайтшоп
- Аспро: Максимум
- Аспро: Корпоративный сайт 3.0
- Аспро: Приорити 2.0
- Аспро: Приорити
- Аспро: Next
- Аспро: Корпоративный сайт 2.0
- Аспро: Маркет
- Аспро: Digital 2.0
- Аспро: Детский сад и образовательный центр
- Аспро: Медицинский центр 3.0
- Аспро: Металл
- Аспро: Стройка 2.0
- Аспро: Автосервис
- Аспро: Инжиниринг
- Аспро: Курорт 2.0
- Аспро: Ландшафт 2.0
- Аспро: Корпоративный сайт современной компании
- Аспро: Стройка
- Аспро: Крутой шоп
- Аспро: Универсальный импорт
- Аспро: Шины и диски 2.0
- Аспро: Digital
- Аспро: Корпоративный сайт
- Аспро: Курорт
- Аспро: Оптимус
- Аспро: Медицинский центр 2.0
- Аспро: Ландшафт
Использование пользовательских событий и функций для кастомизации
Часть функционала готовых решений Аспро хранится в файлах модуля. Менять код в них не рекомендуется, поскольку при установке обновления шаблона внесенные доработки не сохранятся. Чтобы этого избежать, в модуле мы добавили пользовательские события и функции. В статье расскажем, как их использовать для кастомизации решения.
В функциях решения, которые содержат 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.
При таком варианте использовать результат работы метода нельзя. В пользовательской функции есть только исходные параметры, а манипуляций с ними нет. Поэтому логику работы функции нужно настраивать самостоятельно.
