- Целое число
- Дата/Время
- Файл
- Строка
- Список
- Число
- Да/Нет
Эти типы создавались с точки зрения разного хранения в БД. И охватывают все возможные варианты.
Но они совершенно не учитывают специфических методов отображения/взаимодействия с пользователем. Для решения этой задачки при проектировании функционала было учтено будущее возможное расширение этих типов.
[spoiler]
Все типы представлены классами с набором методов, являющимися по сути уровнем между пользователем/системой и хранилищем данных.
Рассмотрим простейший пример, позволяющий продемонстрировать базовую технику расширения. Пусть нам нужно поле которое строки "рисует" в фигурных скобках.
1. Административный интерфейс
В файл /bitrix/php_interface/init.php добавляем следующий код:
class MyCurledType extends CUserTypeString { function GetUserTypeDescription() { return array( "USER_TYPE_ID" => "c_string", "CLASS_NAME" => "MyCurledType", "DESCRIPTION" => "Строка в фигурных скобках", "BASE_TYPE" => "string", ); } //Этот метод вызывается для показа значений в списке function GetAdminListViewHTML($arUserField, $arHtmlControl) { if(strlen($arHtmlControl["VALUE"])>0) return "{".$arHtmlControl["VALUE"]."}"; else return ' '; } } AddEventHandler("main", "OnUserTypeBuildList", array("MyCurledType", "GetUserTypeDescription")); |
2. Публичный раздел сайта
Для компонента system.field.view создаем шаблон (в шаблоне сайта или по умолчанию) с именем c_string скопировав
/bitrix/components/bitrix/system.field.view/templates/string в
/bitrix/templates/.default/components/bitrix/system.field.view/c_string.
Далее правим template.php по своему вкусу.
PS Стоит почитать файлик /bitrix/modules/man/classes/general/usertypestr.php для составления более полного представления о возможностях расширения типов.
На подходе обновления других модулей...
В формах редактирования добавилась вкладка "Доп. свойства"
В публичной части пользовательские свойства поддерживаются в профиле пользователя.
И настройка ключевых слов для разделов.
Т.е. необходимо к существующим полям профайла добавить например поля с паспортными данными.
Заходите в форму редактирования пользователя. На вкладке "Доп. свойства" переходите по ссылке "Добавить...тра-та-там".
Внимательно заполняем и жмем "Сохранить"
Как создавать понятно, а вот где найти документацию по использованию при программировании неясно...
Помогите пожалуйста, я тут новичок.
Вроде разобрался как вывести значения дополнительного пользовательского поля раздела на его странице в публичной части:
Но не могу разобраться, как раз с тем, чтобы вместо простого типа string строки выводить значения поля в виде text/HTML.
Подскажите пожалуйста, как мне добавить этот тип в список, и как его собственно отобразить в том же виде.
У вас получилось добавить в админке метод GetEditFormHTML?
Как это сделать на D7?
Мучался-мучался, так и не смог вывести визуальный редактор для собственного пользовательского типа раздела.
Смотрел функцию GetEditFormHTML в файлике
А кто подскажет, как расширить свойство "Привязка к элементам с автозаполнением"?
Мне необходимо сделать некое вложенное свойство, т.е., создаю свойство Реквизит, указываю, что оно множественное. Данное свойство включает в себя блок из двух полей:
1) одиночное поле типа "Привязка к элементам с автозаполнением"
2) множественное поле того же типа "Привязка к элементам с автозаполнением"
В итоге, мне необходимо получить тип свойства, элементами которого являются блоки, включающие два поля ввода типа "Привязка к элементам с автозаполнением", только одно одиночное, а второе множественное.
Не совсем представляю, как вообще такое сделать, но это очень сильно бы облегчило дальнейшую работу.
Спасибо.
Но, почему-то, не сохраняются вводимые значения. Все поля сохраняются, а эти игнорируются.
Получилось у меня свойство такое:
у инпутов имена примерно такие:
PROP[424][n0][VALUE][MAIN][REQUISITE]
PROP[424][n0][VALUE][MAIN][REQUIRED]
PROP[424][n0][VALUE][MAIN][SORT]
Как я понял, все должно записываться в БД по-умолчанию, ничего конвертить не нужно, поэтому ConvertToDB я не прописывал.
Или же все таки надо как-то конвертить мои инпуты в какой-то формат?
Спасибо.
Идея такая, создаём пользовательское свойство в составе которого есть:
строка - заголовок абзаца
html/текст - для основного текстат абзаца
множественное свойство типа "Привязка к элементам инфоблока" - для привязки товаров или картинок к абзацу (например абзац рассказывает про мужские куртки, которые тут же крутьстся в слайдере и их можно купить)
и т.д.
сортировка - для изменения порядка отображения
т.е. при добавлении статьи я добавляю такие абзацы, меняю их порядок (сортировку) и т.п.
- Целое число
- Дата/Время
- Файл
- Строка
- Список
- Число
- Да/Нет
Эти типы создавались с точки зрения разного хранения в БД. И охватывают все возможные варианты.например стандартные функции sql типа Contains и т.п. для выборки из базы данных по геометрическим запросам... а так же гео индексы очень нужны...
Если еще кто то это читает подскажите как реализовать!!! D7 и ORM на это способены?
Для компонента system.field.edit создаем шаблон (в шаблоне сайта или по умолчанию) с именем c_string скопировав
/bitrix/components/bitrix/system.field.edit/templates/string в
/bitrix/templates/.default/components/bitrix/system.field.edit/c_string.
Далее правим template.php по своему вкусу.
Иначе при редактировании будет выводиться сообщение отсутствия шаблона