Пользовательские свойства
Пользовательские свойства модуля информационных блоков позволяют изменять представление (формы ввода и т.п.) стандартных свойств расширяя их возможности. Фактически такое свойство представляет собой набор обработчиков событий вызываемых при построении административного интерфейса, публичной части сайта или API функций.
При первом обращении к методам пользовательских свойств вызываются обработчики события OnIBlockPropertyBuildList. Строится список свойств и при необходимости вызываются их методы.
Примеры конкретной реализации свойств можно посмотреть в файлах модуля информационных блоков classes/general/prop_*.php
Методы класса
Метод | Описание | С версии |
---|---|---|
GetUserTypeDescription | Описание свойства | 5.0.1 |
CheckFields | Проверка правильности значения | 5.0.1 |
GetLength | Проверка длинны значения | 7.1.0 |
ConvertToDB | Сохранение в БД | 5.0.1 |
ConvertFromDB | Извлечение из БД | 5.0.1 |
GetPropertyFieldHtml | Отображение в форме редактирования | 5.0.1 |
GetAdminListViewHTML | Показ в списке | 6.0.3 |
GetPublicViewHTML | Отображение в публичной части | 6.5.2 |
GetPublicEditHTML | Редактирование в публичной части | 7.1.4 |
GetSearchContent | Индексация значений | 8.6.1 |
PrepareSettings | Сохранение настроек | 8.6.1 |
GetSettingsHTML | Редактирование настроек | 8.6.1 |
GetPropertyFieldHtmlMulty | Вывод формы редактирования множественного свойства. Если отсутствует, то используется GetPropertyFieldHtml для каждого значения отдельно (у множественных свойств). | 5.0.1 |
GetAdminFilterHTML | Выводит html для фильтра по свойству на административной странице списка элементов инфоблока. | 7.0.1 |
GetPublicFilterHTML | Выводит html для фильтра по свойству на публичной странице списка элементов инфоблока. | 8.0.1 |
Фильтрация
Для работы фильтра необходимо в GetUserTypeDescription добавить строчку вида:
"AddFilterFields" => array(__CLASS__,'AddFilterFields'),
и в классе объявить метод:
public static function AddFilterFields($arProperty, $control, &$arFilter, &$filtered)
Надо учитывать что этот метод не обязательный. Метод нужен только если фильтр сильно "не стандартный".