Артём Мáлков

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

28 фев2 комм

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

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

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

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

1. Авторизуйтесь в панели управления Bitrix.

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

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

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

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

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

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

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

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

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

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

  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» – название моей темы. В вашем же случае иерархия папок может немного отличаться.

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

<?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;
	
	}
	
?>

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

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

Рекомендуем к просмотру
Добавляем пользовательское поле в настройки WooCommerce
Хаки
Экспорт (выгрузка) пользовательских полей заказа из 1C-Bitrix в retailCRM
Хаки
Как создать и вывести меню сайта в WordPress?
Посты
2
комментария
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 2
    1
      •  Пользователь
    19 фев в 18:33

    Артём, добрый день! Могли бы Вы немного пояснить данную статью. Где нужно прописывать код:

    <?php
    
    	if($my_fields_1) {
    	
    		echo <<<HTML
    	
    			<h1>{$my_fields_1}</h1>
    	
    HTML;
    	
    	}
    	
    ?>

    И нет ли другого способа вывести пользовательское поле в разделе каталога?

    Заранее спасибо!

      • 2
      1067
        •  Команда Pandoge
      23 фев в 00:42

      Александр Линков, здравствуйте!

      Обновил статью. Теперь должно быть более понятней.

Подняться наверх
«Pandoge» - помощник вебмастера