Пользовательское свойство инфоблока

Пользовательское свойство для инфоблока можно добавить через функцию AddEventHandler('iblock', 'OnIBlockPropertyBuildList') в файле bitrix/php_interface/site_id/init.php (если файла нет, его надо создать).

# bitrix/php_interface/site_id/init.php
AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyCustom", "GetUserTypeDescription"));

class CIBlockPropertyCustom
{
    public function GetUserTypeDescription()
    {
        return array(
            "PROPERTY_TYPE"  => "S", // тип свойства — строка
            "USER_TYPE"      => "HTML",
            "DESCRIPTION"    => "Имя поля",
        );
    }
}

В инфоблоке при выборке свойств появится новый пункт «Имя поля».

Но поле ввода для данного значения  пока не выводится.

Чтобы можно было вводить и сохранять значения для нового свойства, надо добавить параметр GetPropertyFieldHtml.

# bitrix/php_interface/site_id/init.php
AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyCustom", "GetUserTypeDescription"));

class CIBlockPropertyCustom
{
    public function GetUserTypeDescription()
    {
        return array(
            "PROPERTY_TYPE"        => "S", // тип свойства — строка
            "USER_TYPE"            => "HTML",
            "DESCRIPTION"          => "Имя поля",
            "GetPropertyFieldHtml" => array("CIBlockPropertyCustom", "GetPropertyFieldHtml"),
        );
    }

    // вывод поля свойства на странице редактирования
    public function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
    {
        return '<input type="text" name="'.$strHTMLControlName["VALUE"].'" value="'.$value['VALUE'].'">';
    }
}

Теперь поле для нового свойства выводится и его можно редактировать.