Вычисление собственных свойств в SEO шаблонах инфоблока Битрикс

<? //Подключаем модуль инфоблоков
if (\Bitrix\Main\Loader::includeModule(‘iblock’))
{
//регистрируем обработчик события
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
«iblock»,
«OnTemplateGetFunctionClass»,
array(«FunctionMyPriceFormat», «eventHandler»)
);
//подключаем файл с определением класса FunctionBase
//это пока требуется т.к. класс не описан в правилах автозагрузки
include_once($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/iblock/lib/template/functions/fabric.php»);
class FunctionMyPriceFormat extends \Bitrix\Iblock\Template\Functions\FunctionBase
{
//Обработчик события на вход получает имя требуемой функции
//парсер её нашел в строке SEO

public static function eventHandler($event)
{
$parameters = $event->getParameters();
$functionName = $parameters[0];
if ($functionName === «my_price_format»)
{
//обработчик должен вернуть SUCCESS и имя класса
//который будет отвечать за вычисления
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
«\\FunctionMyPriceFormat»
);
}
}
//собственно функция выполняющая «магию»
public function calculate($price)// эта функция лежит в fabric.php, она пустая, и всякие toUpper и toLower ее переопределяют
{
$price = $this->parametersToString($price);
$price = str_replace(«,»,».»,$price);
return round( $price, 2);
}
}
}
?>

Добавить комментарий