Документация для разработчиков
Темная тема

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}


© «Битрикс», 2001-2026, «1С-Битрикс», 2026