Как создать и вывести пользовательское поле раздела в 1C-Bitrix?
С помощью дополнительных полей вы можете нестандартно указать недостающую информацию в разделах вашего сайта.
Лично передо мной встала задача кардинально изменить внешний вид общего списка категорий магазина, а для этого как раз я и прибег к дополнительным полям.
Создание пользовательского поля раздела в 1C-Bitrix
Итак, для того чтобы вам создать свое поле для раздела (категории), сделаем следующее.
1. Авторизуйтесь в панели управления Bitrix.
2. В левом меню откройте раздел «Контент», а в появившейся навигации, в разделе «Каталог», нажмите на пункт «Каталог товаров».
3. После того, как у вас открылся список ваших разделов, в нужном вы жмете на иконку вызова меню, в котором выбираете пункт «Изменить».
4. На открывшейся странице редактирования каталога вы переключаетесь на вкладку «Доп. поля», а в ней жмете ссылку «Добавить пользовательское свойство».
Кстати говоря, все созданные вами поля будут отображаться как раз в этой вкладке, ниже под ссылкой.
5. После того, как в предыдущем шаге мы перешли по ссылке, у нас откроется форма добавления поля:
Что нас тут по большей части интересует?
- Тип – это тип вводимых данных. Если у вас простой текст, то рекомендую выбирать «Строка», если же у вас число или цена – для них тоже есть свои типы в выпадающем списке.
- Объект. Это то, в каком разделе будет выводиться данное поле. В вашем случае, если вы перешли сюда по ссылке с раздела, будет заполнено автоматически.
- Код поля. Уникальное имя вашего поля (может содержать только A-Z, 0-9 и _). Обязательно запомните это имя, так как оно потребуется нам для вывода.
- Сортировка – порядок вывода поля в общем списке полей раздела.
- Значение по умолчанию – то значение, которое будет заполнено по умолчанию при создании каждого нового раздела.
- Количество строк. Если у вас поле предназначено для заголовка, то лучше всего ставьте «1», если оно служит для заполнения, например, описания – то выставьте «10» или другое удобное для вас количество строк.
- Минимальная/Максимальная длина строки – поля для определения граничных условий длины данных поля. Очень полезная вещь, когда вы задаете некую маску. Например, индекс в России шестизначный, отсюда минимальное и максимальное значение будет «6».
Помимо этого, ниже есть блок языковых настроек (он не убрался на скриншоте). Там вы задаете название поля, которое будет отображаться в списке полей, а также подсказку по его заполнению в разделе. Сложного ничего нет, думаю, сообразите. Остальные параметры я здесь не рассматриваю, так как того, что описано в статье, вам вполне хватит. Если почему-то у вас остались вопросы – задавайте их в комментариях.
После того, как необходимая информация о свойстве (поле) указана – жмете «Сохранить» или «Применить». В случае, если ошибок никаких не возникло, ваше поле будет успешно создано и одновременно доступно в соответствующей вкладке на странице редактирования раздела, о чем я писал ранее.
Можете заполнить ваши поля нужной информацией, а дальше мы поговорим о том, как вывести эти самые поля.
Вывод пользовательского поля раздела в 1C-Bitrix
Теперь логично перейти к выводу созданных ранее нами полей. Все изменения мы будем совершать в теме сайта.
1. Подключитесь к вашему сайту по FTP.
2. Откройте файл, отвечающий за вид разделов. У меня это был файл template.php в папке /bitrix/templates/pandoge_com/components/bitrix/catalog.section.list/sections_list/, где «pandoge_com» – название моей темы. В вашем же случае иерархия папок может немного отличаться.
В нем, в нужном вам месте, вы используете следующую конструкцию внутри перебора массива:
<?php
$get_fields = CIBlockSection::GetList(
array(),
array(
'IBLOCK_ID' => $arItems['IBLOCK_ID'],
'ID' => $arItems['ID']
),
false,
array(
'UF_*'
)
);
if($get_fields_item = $get_fields->GetNext()) {
$my_fields_1 = $get_fields_item['UF_DOP_TITLE'];
}
?>
На что здесь нужно обратить внимание?
Переменные $arItems['IBLOCK_ID'] и $arItems['ID'] в коде должны возвращать вам ID инфоблока и раздела соответственно. Проверяйте отдельно возвращаемые результаты переменных через «echo» или «var_dump».
$my_fields_1 - переменная, содержащая в себе значение конкретного поля. Дублируете всю строку с заменами при необходимости получения нового дополнительного поля.
UF_DOP_TITLE – это имя вашего поля, которое вы задавали при создании в 5-м пункте. Если вдруг вы не записали название поля, то узнать его вы можете следующим образом.
2.1. Авторизуйтесь в панели управления сайтом.
2.2. В левом меню откройте раздел «Настройки». В появившейся навигации выберите пункт «Настройки продукта» - «Пользовательские поля», после чего у вас откроется список со всеми полями, где вы ищете имя вашего поля.
3. После этого ниже (в этом же файле) в нужное место вставляете следующий код для вызова ранее созданного вами поля:
<?php
if($my_fields_1) {
echo <<<HTML
<h1>{$my_fields_1}</h1>
HTML;
}
?>
Вывод данных из поля в таком случае происходит только при наличии в нем информации в панели управления вашим сайтом.
На этом, собственно, и все. Вывод полей на самом деле простой, главное – это корректное возвращение данных переменными и заданное имя вашего поля. Если какие моменты показались вам не совсем понятными – не стесняйтесь и спрашивайте об этом в комментариях под данной статьей.