Август 24, 2018
Теги: Инфоблоки, Как это сделать?
Добавление собственных функций для использования на вкладке "SEO" интерфейса инфоблоков (наследуемые свойства).
<?php
namespace Partner\SeoFunctions;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/lib/template/functions/fabric.php");
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
"iblock",
"OnTemplateGetFunctionClass",
"\Partner\SeoFunctions\getFunctionClass"
);
function getFunctionClass(\Bitrix\Main\Event $event)
{
$arParams = $event->getParameters();
$functionName = $arParams[0];
switch ($functionName)
{
case 'pricenotnull':
$result = new \Bitrix\Main\EventResult(1,'\Partner\SeoFunctions\pricenotnull');
break;
// здесь можно добавить описания других функций
}
return $result;
}
/*
примеры стандартных функций можно посмотреть здесь:
/bitrix/modules/iblock/lib/template/functions/fabric.php
*/
class pricenotnull extends \Bitrix\Iblock\Template\Functions\FunctionBase
{
public function calculate(array $parameters)
{
/*
параметры функции содержаться в $parameters
их может быть несколько, разделенных пробелами:
{=functionname param1 "значение параметра 2"}
*/
if(floatval($parameters[0])>0)
{
return $parameters[0];
}
return "";
}
}