Как добавить свою функцию для вкладки "SEO"

Модуль расширенного управления меню для битрикс

Август 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 
"";
    }
}

Пример использования функции:


{=pricenotnull this.catalog.price.BASE}

См. также:

← Переход к списку