Как добавить и отобразить свойства у разделов в 1С-Битрикс

Если в вашем инфоблоке богатая структура, а именно — есть и элементы и разделы, то рано или поздно вам захочется вывести свойство, которое привязано к конкретному разделу. Сделать это можно несколькими способами, но мы рассмотрим только вывод через пользовательские свойства.

Как добавить и вывести дополнительные поля и свойства раздела в 1С-Битрикс

Чтобы это сделать, зайдите в админку, на нужном разделе нажмите «Изменить» или кликните по его ID (стоит отметить, если вы кликните по имени раздела, вы перейдете в сам раздел).

Отлично, мы в настройках раздела. На последней вкладке Доп. свойства мы и создадим наше пользовательское свойство, кликаем на Добавить пользовательское свойство (если у вас ее нету, не забудьте сбросить ваши настройки формы — делается это тут же, кликните на синюю шестеренку и отмените настройки).

Теперь нам необходимо создать поле. Самым популярным типом является строка, меняем наш тип (по умолчанию Видео) на Строка. Самое важное задать понятный Код поля — ну, например, это может быть UF_TITLE или UF_SECTION_DESC — этот код нам в дальнейшем пригодится для вывода, поэтому желательно давать осмысленные названия.

Кстати говоря, приставку UF_ рекомендуется оставить, так как другим разработчикам будет более понятней что мы пытаемся вывести, да и вам самим тоже. В самом низу формы создания поля, после того как мы придумали ему имя и задали тип, мы пишем ему название на русском и английском (для админки).

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

Поле мы создали, осталось понять как его вывести на сайте. Для начала заполните на каком-то разделе эти свойства (я создам 3 поля для мета свойств), после чего переходим на этот раздел на нашем сайте. Если нам необходимо выводить эти свойства динамически (ID раздела будет меняться в зависимости от того, на каком разделе мы сейчас находимся), то заходим в наш код компонента (новости это или каталог) и где-нибудь в начале кода или в самом конце пишем:

Тут мы задаем ID инфоблока «IBLOCK_ID» => 14, и подхватываем наш динамический ID раздела
«ID» => $arResult [‘ID’]. В массиве, который отвечает за выбор полей для отображения, мы выводим 3 наших только что созданных свойства типа строка «UF_TITLE», «UF_KEYWORDS», «UF_DESCRIPTION».

Кстати, если вы еще не читали про CIBlockSection::GetList, советую глянуть эту статью, возможно вы узнаете для себя много интересного 🙂
О том, как вывести остальные наши 2 свойства и просто работать с мета данными, вы можете прочитать в статье Как задавать мета свойства в 1С-Битрикс.

Довольно часто на проектах необходимо выполнить работу связанную с пользовательскими полями и дополнительными свойствами. Если на вашем сайте, сделанном на 1С-Битрикс, необходимо вывести такие поля, свяжитесь со мной по скайпу или напишите мне на почту.

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.com/dmitriy/.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

10 комментария

    1. Для элемента можно использовать обычные свойства (которые задаются в инфоблоке). Если хотите, вот пример для заголовков:

      $myNewTitle = $arResult[‘PROPERTIES’][‘TITLE_NEW’][‘VALUE’];
      if(!$arResult[‘PROPERTIES’][‘TITLE_NEW’][‘VALUE’]) {
      $myTitle = $arResult[‘NAME’].» купить в Москве «.$arResult[‘ID’];
      $APPLICATION->SetPageProperty(«title», «$myTitle»);
      } else {
      $APPLICATION->SetPageProperty(«title», «$myNewTitle»);
      }

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

  1. Здравствуйте, Дмитрий! Скажите, пожалуйста, как добавить информацию на вкладку карточки товара? Внизу три вкладки — описание, которое можно править визуальным редактором, таблица размеров и отзывы. Хочу загрузить в таблицу размеров саму таблицу. Как это сделать в админке просто и быстро? Буду очень признательна за помощь!

      1. Дмитрий добрый день! Спасибо, отличный урок. Немогли бы подсказать пожалуйста, как решить такую задачу. Через компонент news.list выводятся элементы информационного блока медиагалерея в этом ИБ есть два раздела это фотогалерея и видеогалерея. Для этих разделов я добавил пользовательское поле UF_ICON. Теперь мне нужно получить значение этого пользовательского поля для каждого элемента. Воспользовался методом CIBlockSection::GetList, но получается вывести только значение пользовательского поля для одного элемента а нужно для всех. Вот код
        Код
        $iblock_id, ‘ID’ => $id_section), false, array(«ID»,»UF_PHOTO_ICON»), false);
        while($props_array = $section_props->GetNext()){
        $arResult[«SECTIONS_ID»] = $props_array[«ID»];
        }
        ?>

        1. Здравствуйте, извиняюсь что долго не отвечал, ваш комментарий почему-то залетел в спам =\ Этот вопрос еще актуален?

  2. $db_list = CIBlockSection::GetList(
    [$by=>$order],
    [‘IBLOCK_ID’ => $arResult[‘IBLOCK_ID’], «ACTIVE»=>»Y», ‘GLOBAL_ACTIVE’=>’Y’, ‘ID’ => $sectionIds],
    true,
    // [‘IBLOCK_ID’, ‘IBLOCK_SECTION_ID’, ‘IBLOCK_CODE’, ‘ID’, ‘NAME’, ‘CODE’, ‘PICTURE’, ‘UF_TYPE’, ‘UF_BG_TYPE’],
    [‘UF_*’],
    false
    );

    Подскажи почему пользовательское свойство не возвращается

    1. потому что не правильный код:
      $db_list = CIBlockSection::GetList(
      array($by=>$order),
      array(‘IBLOCK_ID’ => $arResult[‘IBLOCK_ID’], «ACTIVE»=>»Y», ‘GLOBAL_ACTIVE’=>’Y’, ‘ID’ => $sectionIds),
      false,
      array(‘IBLOCK_ID’, ‘IBLOCK_SECTION_ID’, ‘IBLOCK_CODE’, ‘ID’, ‘NAME’, ‘CODE’, ‘PICTURE’, ‘UF_TYPE’, ‘UF_BG_TYPE’, ‘UF_*’)
      );

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *