OnTemplateGetFunctionClass
\Bitrix\Main\EventResult обработчик( \Bitrix\Main\Event $event );
Событие OnTemplateGetFunctionClass вызывается модулем iblock при создании объекта функции шаблона SEO-свойств инфоблока, если функция не найдена среди стандартных функций и уже найденных через это событие пользовательских функций.
Событие позволяет вернуть имя класса, который будет обрабатывать найденную в шаблоне функцию. Обработчик должен вернуть имя класса, а не экземпляр объекта.
Параметры
| Параметр | Описание |
|---|---|
| $functionName | Имя функции шаблона, для которой нужно определить класс обработчика. |
Параметр передается первым элементом массива параметров события:
$parameters = $event->getParameters(); $functionName = $parameters[0];
Возвращаемое значение
Обработчик должен вернуть объект \Bitrix\Main\EventResult с типом \Bitrix\Main\EventResult::SUCCESS. В параметрах результата передается строка с именем класса функции.
return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, MyTemplateFunction::class );
Класс будет использован только если он существует. После успешного определения класс сохраняется во внутренней карте функций и при следующих вызовах этой функции событие повторно не вызывается.
Если обработчик не вернул успешный результат или вернул несуществующий класс, будет использована базовая функция, возвращающая пустую строку.
Смотрите также
Пример
<?php
use Bitrix\Main\Event;
use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;
use Bitrix\Main\Loader;
use Bitrix\Iblock\Template\Functions\FunctionBase;
if (Loader::includeModule('iblock'))
{
EventManager::getInstance()->addEventHandler(
'iblock',
'OnTemplateGetFunctionClass',
['MyTemplateFunction', 'onTemplateGetFunctionClass']
);
class MyTemplateFunction extends FunctionBase
{
public static function onTemplateGetFunctionClass(Event $event)
{
$parameters = $event->getParameters();
$functionName = $parameters[0];
if ($functionName === 'prefix')
{
return new EventResult(
EventResult::SUCCESS,
self::class
);
}
return null;
}
public function calculate(array $parameters)
{
return 'Prefix: ' . $this->parametersToString($parameters);
}
}
}
Использование функции в шаблоне:
{=prefix this.Name}