1C-Битрикс: Управление сайтом

Пользовательские свойства(6.0.0)

Пользовательские свойства модуля информационных блоков позволяют изменять представление (формы ввода и т.п.) стандартных свойств расширяя их возможности. Фактически такое свойство представляет собой набор обработчиков событий вызываемых при построении административного интерфейса, публичной части сайта или API функций.

При первом обращении к методам пользовательских свойств вызываются обработчики события OnIBlockPropertyBuildList. Строится список свойств и при необходимости вызываются их методы.

Примеры конкретной реализации свойств можно посмотреть в файлах модуля информационных блоков classes/general/prop_*.php

Методы класса

Метод Описание
GetUserTypeDescription Описание свойства
CheckFieldsПроверка правильности значения
GetLengthПроверка длинны значения
ConvertToDBСохранение в БД
ConvertFromDBИзвлечение из БД
GetPropertyFieldHtmlОтображение в форме редактирования
GetAdminListViewHTMLПоказ в списке
GetPublicViewHTMLОтображение в публичной части
GetPublicEditHTMLРедактирование в публичной части
GetSearchContentИндексация значений
PrepareSettingsСохранение настроек
GetSettingsHTMLРедактирование настроек

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
EvGenius
Часто возникает необходимость привязывать пользовательские свойства к комментариям блогов, форумов или любым другим объектам, которые по умолчанию не поддерживают пользовательские свойства. В таких случаях может помочь использование недокументированных возможностей системы.
Поясним на примере комментариев блога. Создаем с помощью админки пользовательское свойство нужного типа (Настройки->Настройки продукта->Пользовательские поля). Заполняем все, как обычно, но в поле "Объект" указываем "BLOG_COMMENT" (или любое другое придуманное имя объекта, лишь бы оно было уникально).
Для считывания и записи значений пользовательских свойств можно использовать следующие функции:
Код
function GetUserField ($entity_id, $value_id, $property_id) 
{ 
      $arUF = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields ($entity_id, $value_id); 
      return $arUF[$property_id]["VALUE"]; 
} 

function SetUserField ($entity_id, $value_id, $uf_id, $uf_value) 
{ 
   return $GLOBALS["USER_FIELD_MANAGER"]->Update ($entity_id, $value_id, 
      Array ($uf_id => $uf_value)); 
}

Пример использования:
Код
SetUserField ("BLOG_COMMENT", $CommentID, "UF_RATING", $Rating);


Код
echo "Рейтинг комментария: ".GetUserField ("BLOG_COMMENT", $CommentID, "UF_RATING");


Данный подход, конечно, не так удобен, как использование функций GetList для объектов с "врожденной" поддержкой кастомных свойств. Однако, он позволяет максимально быстро и просто использовать в самописных компонентах и модулях пользовательские свойства для произвольных объектов.
0
Maxim Smirnov
Комментарий выше относится к пользовательским типам главного модуля.
0
Евгений Петухов
Если необходимо добавить пользовательское свойство к разделу инфоблока через механизм Битрикс-API, нужно использовать следующий код с вариациями:
Код
$arFields = Array(
"ENTITY_ID" => "IBLOCK_2_SECTION",
"FIELD_NAME" => "UF_TITLE",
"USER_TYPE_ID" => "string",
"EDIT_FORM_LABEL" => Array("ru"=>"заголовок", "en"=>"title")
);
$obUserField  = new CUserTypeEntity;
$obUserField->Add($arFields);

FIELD_NAME - обязательное поле и должно быть заполнено строго в верхнем регистре, иначе словите ошибку.
Возможные типы пользовательских полей (USER_TYPE_ID):
"enumeration"->Список
"double"->Число
"boolean"->Да/Нет
"string"->Строка
"file"->Файл
"datetime"->Дата/Время
"iblock_section"->Привязка к разделам инф. блоков
"integer"->Целое число
Список полей для каждого из этих типов можно сверить с формой редактирования в панели управления (смотрим подсказку и name="" в исходном HTML-коде).
© «Битрикс», 2001-2012, «1C-Битрикс», 2012