Битрикс как вывести все пользовательские поля

Как создать и вывести пользовательское поле раздела в 1C-Bitrix?

С помощью дополнительных полей вы можете нестандартно указать недостающую информацию в разделах вашего сайта.

Лично передо мной встала задача кардинально изменить внешний вид общего списка категорий магазина, а для этого как раз я и прибег к дополнительным полям.

Создание пользовательского поля раздела в 1C-Bitrix

Итак, для того чтобы вам создать свое поле для раздела (категории), сделаем следующее.

2. В левом меню откройте раздел «Контент», а в появившейся навигации, в разделе «Каталог», нажмите на пункт «Каталог товаров».

3. После того, как у вас открылся список ваших разделов, в нужном вы жмете на иконку вызова меню, в котором выбираете пункт «Изменить».

4. На открывшейся странице редактирования каталога вы переключаетесь на вкладку «Доп. поля», а в ней жмете ссылку «Добавить пользовательское свойство».

Кстати говоря, все созданные вами поля будут отображаться как раз в этой вкладке, ниже под ссылкой.

5. После того, как в предыдущем шаге мы перешли по ссылке, у нас откроется форма добавления поля:

Что нас тут по большей части интересует?

  1. Тип – это тип вводимых данных. Если у вас простой текст, то рекомендую выбирать «Строка», если же у вас число или цена – для них тоже есть свои типы в выпадающем списке.
  2. Объект. Это то, в каком разделе будет выводиться данное поле. В вашем случае, если вы перешли сюда по ссылке с раздела, будет заполнено автоматически.
  3. Код поля. Уникальное имя вашего поля (может содержать только A-Z, 0-9 и _). Обязательно запомните это имя, так как оно потребуется нам для вывода.
  4. Сортировка – порядок вывода поля в общем списке полей раздела.
  5. Значение по умолчанию – то значение, которое будет заполнено по умолчанию при создании каждого нового раздела.
  6. Количество строк. Если у вас поле предназначено для заголовка, то лучше всего ставьте «1», если оно служит для заполнения, например, описания – то выставьте «10» или другое удобное для вас количество строк.
  7. Минимальная/Максимальная длина строки – поля для определения граничных условий длины данных поля. Очень полезная вещь, когда вы задаете некую маску. Например, индекс в России шестизначный, отсюда минимальное и максимальное значение будет «6».

Помимо этого, ниже есть блок языковых настроек (он не убрался на скриншоте). Там вы задаете название поля, которое будет отображаться в списке полей, а также подсказку по его заполнению в разделе. Сложного ничего нет, думаю, сообразите. Остальные параметры я здесь не рассматриваю, так как того, что описано в статье, вам вполне хватит. Если почему-то у вас остались вопросы – задавайте их в комментариях.

После того, как необходимая информация о свойстве (поле) указана – жмете «Сохранить» или «Применить». В случае, если ошибок никаких не возникло, ваше поле будет успешно создано и одновременно доступно в соответствующей вкладке на странице редактирования раздела, о чем я писал ранее.

Можете заполнить ваши поля нужной информацией, а дальше мы поговорим о том, как вывести эти самые поля.

Вывод пользовательского поля раздела в 1C-Bitrix

Теперь логично перейти к выводу созданных ранее нами полей. Все изменения мы будем совершать в теме сайта.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл, отвечающий за вид разделов. У меня это был файл template.php в папке /bitrix/templates/pandoge_com/components/bitrix/catalog.section.list/sections_list/, где «pandoge_com» – название моей темы. В вашем же случае иерархия папок может немного отличаться.

В нем, в нужном вам месте, вы используете следующую конструкцию внутри перебора массива:

На что здесь нужно обратить внимание?

Переменные $arItems[‘IBLOCK_ID’] и $arItems[‘ID’] в коде должны возвращать вам ID инфоблока и раздела соответственно. Проверяйте отдельно возвращаемые результаты переменных через «echo» или «var_dump».

$my_fields_1 — переменная, содержащая в себе значение конкретного поля. Дублируете всю строку с заменами при необходимости получения нового дополнительного поля.

UF_DOP_TITLE – это имя вашего поля, которое вы задавали при создании в 5-м пункте. Если вдруг вы не записали название поля, то узнать его вы можете следующим образом.

2.2. В левом меню откройте раздел «Настройки». В появившейся навигации выберите пункт «Настройки продукта» — «Пользовательские поля», после чего у вас откроется список со всеми полями, где вы ищете имя вашего поля.

3. После этого ниже (в этом же файле) в нужное место вставляете следующий код для вызова ранее созданного вами поля:

Вывод данных из поля в таком случае происходит только при наличии в нем информации в панели управления вашим сайтом.

На этом, собственно, и все. Вывод полей на самом деле простой, главное – это корректное возвращение данных переменными и заданное имя вашего поля. Если какие моменты показались вам не совсем понятными – не стесняйтесь и спрашивайте об этом в комментариях под данной статьей.

Источник

Вывод «Пользовательского поля» в разделе каталога

В шаблоне комплексного каталога в \bitrix\catalog.section\.default\template.php я вставил код

название, код, описание и свойства которые вказаны на странице как «Установить ключевые слова страницы из свойства:» выводит а мои не хочит.

Подскажите пожалуйста, как вывести свои пользовательские свойства?

Создал вот этот код, но он выводит поле только в случае если «Тип данных» — «Строка» и то не множественная, а как вывести остальные: «Список», «Привязка к разделам инф. блоков» и др.

Цитата
Alexandr пишет:
Создал вот этот код, но он выводит поле только в случае если «Тип данных» — «Строка» и то не множественная, а как вывести остальные: «Список», «Привязка к разделам инф. блоков» и др.

Вот мой код который выводит ИД списка пользовательских полей

Техподержка прислала мне следующий код

сделал так, но не работает

Цитата
«SECTION_USER_FIELDS» => array(‘UF_*’),

Одна из причин почему не выводятся пользовательские свойства разделов — не указан ID инфоблока
То есть, фильтр:
Array(«ID» => $arResult[‘ORIGINAL_PARAMETERS’][‘SECTION_ID’], «ACTIVE» => «Y»)
не выведет ничего нужного

Но если указать:
Array(«ID» => $arResult[‘ORIGINAL_PARAMETERS’][‘SECTION_ID’], «ACTIVE» => «Y», «IBLOCK_ID» => 2),
то всё ок. саму цифру 2 — лучше заменить на значение из $arParams или $arResult[‘IBLOCK_ID’]

После этого свойства UF_ появляются в массиве

Источник

Пользовательские поля

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

Форма поиска

Форма фильтра используется для выбора из списка пользовательских полей в соответствии с указанными условиями. Нижеследующая таблица описывает параметры, по которым может выполняться поиск.

Параметр Описание
Найти Позволяет найти пользовательские поля по их основным параметрам: идентификатору или объекту.

Это поле присутствует, даже если фильтр свернут.

ID Поиск поля по идентификатору.
Объект Поиск свойства по объекту, например, USER, USER_PROPERTY, BLOG_POST и т.д.
Название поля Поиск поля по названию. Название начинается с UF_.
Тип данных Поиск поля по типу данных. Предлагается следующий набор типов данных:

  • Адрес;
  • Бронирование ресурсов;
  • Видео;
  • Да/Нет;
  • Дата;
  • Дата со временем;
  • Деньги;
  • Документ из библиотеки документов (Только для «Битрикс24 в коробке»);
  • Опрос;
  • Письмо (email);
  • Привязка к разделам инф. блоков;
  • Привязка к сотруднику;
  • Привязка к справочникам CRM;
  • Привязка к элементам CRM;
  • Привязка к элементам highload-блоков;
  • Привязка к элементам инф. блоков;
  • Содержимое ссылки;
  • Список;
  • Ссылка;
  • Строка;
  • Файл;
  • Целое число;
  • Число;
  • Шаблон.
XML_ID Поиск по внешнему идентификатору XML_ID.
Множ. Поиск по признаку, является ли поле множественным, т.е. можно ли задать несколько значений одного поля.
Обяз. Поиск по признаку, является ли поле обязательным для заполнения.
Фильтр Поиск по способу отображения поля в фильтре:
  • не показывать;
  • точное совпадение;
  • поиск по маске;
  • поиск по подстроке.
Показ. Поиск по признаку, показывать ли данное поле в списке по месту применения.
Редакт. Поиск по признаку, можно ли редактировать данное поле пользователем.
Поиск Поиск по признаку, участвуют ли значения поля в поиске.

Чтобы отобрать пользовательские поля по заданным критериям поиска, нажмите кнопку Найти. Для отображения всех пользовательских полей нажмите кнопку Отменить.

Контекстная панель

Кнопка Описание
Добавить Переход к форме создания нового пользовательского поля.
Настроить Переход к диалогу настройки внешнего вида отчетной формы.
Excel Экспорт данных из отображаемой таблицы в MS Excel.

Список пользовательских полей

Поле Описание
Колонка флажков Поле предназначено для выбора пользовательских полей, к которым предполагается применить какое-либо правило или действие.
Действия Доступные операции над пользовательским полем:
  • Изменить — переход к форме редактирования параметров пользовательского поля;
  • Удалить — удаление пользовательского поля.
ID Уникальный идентификатор пользовательского поля.
Объект Данное поле заполняется автоматически при переходе к созданию поля с места применения (например из формы редактирования пользователя, значение объекта — USER). Либо заполняется вручную при создании поля со страницы Пользовательские поля.
Название поля Код поля. Можно задать только для нового поля. Начинается с UF_. Задается только латинскими буквами.
Тип данных Один из доступных типов данных:
  • Привязка к элементам highload-блоков;
  • Документ из библиотеки документов (Только для «Битрикс24 в коробке»);
  • Число;
  • Да/Нет;
  • Видео;
  • Шаблон;
  • Список;
  • Строка;
  • Дата/Время;
  • Привязка к сотруднику;
  • Привязка к разделам инф. блоков;
  • Привязка к элементам инф. блоков;
  • Привязка к элементам CRM;
  • Привязка к справочникам CRM;
  • Файл;
  • Целое число.
XML_ID Внешний XML идентификатор поля.
Сорт. Индекс сортировки, определяющий положение поля в общем списке.
Множ. Признак множественности поля.
Обяз. Признак обязательности поля для заполнения.
Фильтр Указывается способ отображения поля в фильтре.
Показ. Параметр определяет показ поля в списке дополнительных полей той или иной формы.
Редакт. Параметр определяет разрешать редактирование поля или нет.
Поиск Признак участия значений поля в поиске в публичной части сайта.

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

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Как программно получить пользовательские поля?

Всем доброго времени суток!

Суть задачи:
При авторизации проверять значение пользовательского поля юзверя и по заданному алгоритму производить дополнительные действия, связанные с авторизацией.

Юзаю событие OnAfterUserAuthorize и функцию CUser::GetList.

Код
‘; //устанавливаем фильтр для вывода дополнительных полей пользователя $rsUser = CUser::GetList(($by=»ID»), ($order=»desc»), array(«ID»=>$arUser[ID]),array(«SELECT»=>array(«UF_MY_USER_FIELD»))); echo »; > >

Получаем:
Первый print_r выдает все поля пользователя, согласно документации, т.е. все по-честному.
Но вот второй print_r вопреки моим ожиданиям не выдает id поля «UF_MY_USER_FIELD»

При этом в профиле пользователя значение доп свойства доступно.

Может кто сталкивался или так подскажет, в чем же все-таки проблема?

Должно работать, ищите ошибку в своём коде.

Суть в том, что после вызова CUser::GetList() или CUser::GetByID() вы получаете объект класса CDBResult . Чтобы извлечь из него данные, его нужно фетчить — либо через метод Fetch() , либо через GetNext() . А в вашем исходном коде:

Цитата
Екатерина Бондарева пишет:
$rsUser = CUser::GetList(($by=»ID»), ($order=»desc»), array(«ID»=>$arUser[ID]),array(«SELECT»=>array(«UF_MY_USER_FIELD»)));
print_r($rsUser);

Цитата
Екатерина Бондарева пишет:
Попробовала. Получаю пустую выборку

Если первый вариант — тоже ошибка в общем случае.

Цитата
Екатерина Бондарева пишет:
Попробовала. Получаю пустую выборку

Спасибо за разъяснения Dmitry Ban .
Прочитав доки я тоже так поняла. но т.к. на практике у меня получается несколько иначе начала пробовать различные вариации.
Прочитав Ваш ответ написала следующее:

Код
‘; else: echo ‘$userdata нету :(((((( ‘; endif; > >

Получила на выходе:

Цитата
Екатерина Бондарева пишет:
Получила на выходе:
Код
rsUser СУЩЕСТВУЕТ =))))$userdata нету (((((
Цитата
Dmitry Ban пишет:
Ой ли?

Лично в свое время имел немерянные косяки с этим. Насколько помню, зависит то ли от версии php, то ли от настроек. В любом случае, синтаксис лучше соблюдать.

Екатерина Бондарева ,, я бы на Вашем месте вывел в файл то, что передается Вашему обработчику события, посмотрел, что там идет. Если все в порядке — надо лезть в метод CUser::GetList (собственно, CUser::GetByID — всего лишь оболочка), ну и на юзера Вашего смотерть, для которого проверяете (если, конечно, для разных не тестили)

Цитата
Александр Егжанов пишет:
Нету у массива $arUser поля ID, есть только поле $arUser[‘user_fields’][‘ID’]

//Выборка пользователей в группе с выводом их пользовательского свойства и задание постраничной навигации нум может тоже поможет

$rsUsers = CUser::GetList(($by=»ID»), ($order=»desc»), $filter, $arParameters ); // выбираем пользователей
$is_filtered = $rsUsers->is_filtered; // отфильтрована ли выборка ?
$rsUsers->NavStart(50); // разбиваем постранично по 50 записей
echo $rsUsers->NavPrint(GetMessage(«PAGES»)); // печатаем постраничную навигацию
while($rs = $rsUsers->GetNext()) <
//echo «[«.$f_ID.»] («.$f_LOGIN.») «.$f_NAME.» «.$f_LAST_NAME.»
«;
echo «»;
>

Источник

Читайте также:  Нужно ли чистить зубы новорожденным
Оцените статью