Сначала добавлю новое пользовательское поле в раздел инфоблока. Тип поля – строка. В системе поддерживаются различные типы пользовательских полей. Например, целое число, дата/время, файл, список и другие. Для своих опытов я выбрал инфоблок «Новости». В добавленном поле я буду хранить какое-нибудь значение, поле назову «UF_MY_FIELD
».
Вообще добавить новое пользовательское поле можно в разделе настроек административной части сайта: Настройки → Настройки продукта → Пользовательские поля, но правильнее будет это сделать на закладке «Доп. свойства» любого раздела определенного инфоблока, в случае если поле добавляется разделу.
Теперь заполню одно из полей у раздела с ID равным 5 - «Выставки» (инфоблок «Новости»). Значение этого поля будет «Test». Далее я покажу, как вывести значение этого поля на странице сайта, например, в компоненте «Список разделов каталога» (bitrix:catalog.section.list).
Сначала создадим в корне сайта новую страницу с именем test.php. Разместим на ней компонент bitrix:catalog.section.list и сделаем настройки.
Далее скопируем шаблон компонента в папку нашего шаблона сайта. Назовем новый шаблон “test_fields”. Создадим в папке «нового» шаблона файл result_modifier.php. В нем мы будем «обходить» массив $arResult
и добавлять в него данные из пользовательских полей разделов, если они не пустые. В файле будет содержаться следующий код:
PHP
Для проверки можно вывести измененный массив с помощью print_r()
.
В коде используется функция CAllUserTypeManager::GetUserFields()
, она возвращает массив с информацией о значении пользовательского поля.
Описание функции
CAllUserTypeManager::GetUserFields(
string entityID,
int ElemID,
string fieldName)
entityID
- имя объекта пользовательского поля;
ElemID
- идентификатор элемента (вероятно, ID элемента, свойство которого мы сохраняем или получаем. в нашем случае, это ID комментария);
fieldName
- имя пользовательского поля (по умолчанию false);
Функция возвращает массив с информацией о значении пользовательского поля.
Код функции находится в файле - /bitrix/modules/main/classes/general/usertype.php
Теперь, когда значение пользовательского поля находится в массиве $arResult
, можно вывести его в шаблоне компонента. Например, я выведу значение элемента массива $arSection[“UF_MY_FIELD”]
после названия раздела. Для этого изменим код в шаблоне компонента:
PHP
И получим результат:
Несмотря на то, что показанный в статье пример не особо полезен, тем не менее, он показывает как можно получить доступ к значению пользовательских полей в шаблоне компонента.