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

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
Наверх