Если в вашем инфоблоке богатая структура, а именно – есть и элементы и разделы, то рано или поздно вам захочется вывести свойство, которое привязано к конкретному разделу. Сделать это можно несколькими способами, но мы рассмотрим только вывод через пользовательские свойства.
Как добавить и вывести дополнительные поля и свойства раздела в 1С-Битрикс
Чтобы это сделать, зайдите в админку, на нужном разделе нажмите “Изменить” или кликните по его ID (стоит отметить, если вы кликните по имени раздела, вы перейдете в сам раздел).
Отлично, мы в настройках раздела. На последней вкладке Доп. свойства мы и создадим наше пользовательское свойство, кликаем на Добавить пользовательское свойство (если у вас ее нету, не забудьте сбросить ваши настройки формы – делается это тут же, кликните на синюю шестеренку и отмените настройки).
Теперь нам необходимо создать поле. Самым популярным типом является строка, меняем наш тип (по умолчанию Видео) на Строка. Самое важное задать понятный Код поля – ну, например, это может быть UF_TITLE или UF_SECTION_DESC – этот код нам в дальнейшем пригодится для вывода, поэтому желательно давать осмысленные названия.
Кстати говоря, приставку UF_ рекомендуется оставить, так как другим разработчикам будет более понятней что мы пытаемся вывести, да и вам самим тоже. В самом низу формы создания поля, после того как мы придумали ему имя и задали тип, мы пишем ему название на русском и английском (для админки).
1С-Битрикс как вывести пользовательские поля разделов
Поле мы создали, осталось понять как его вывести на сайте. Для начала заполните на каком-то разделе эти свойства (я создам 3 поля для мета свойств), после чего переходим на этот раздел на нашем сайте. Если нам необходимо выводить эти свойства динамически (ID раздела будет меняться в зависимости от того, на каком разделе мы сейчас находимся), то заходим в наш код компонента (новости это или каталог) и где-нибудь в начале кода или в самом конце пишем:
<?$fSections = CIBlockSection::GetList( false, Array("IBLOCK_ID" => 14, "ID" => $arResult ['ID'], "ACTIVE"=>"Y", "GLOBAL_ACTIVE"=>"Y", "SECTION_ACTIVE" => "Y"), false, Array("UF_TITLE", "UF_KEYWORDS", "UF_DESCRIPTION), false ); $flSections = $fSections->Fetch(); if ($flSections['UF_TITLE']) { $APPLICATION->SetPageProperty("title", $flSections['UF_TITLE']); }?>
Тут мы задаем ID инфоблока “IBLOCK_ID” => 14, и подхватываем наш динамический ID раздела
“ID” => $arResult [‘ID’]. В массиве, который отвечает за выбор полей для отображения, мы выводим 3 наших только что созданных свойства типа строка “UF_TITLE”, “UF_KEYWORDS”, “UF_DESCRIPTION”.
Кстати, если вы еще не читали про CIBlockSection::GetList, советую глянуть эту статью, возможно вы узнаете для себя много интересного 🙂
О том, как вывести остальные наши 2 свойства и просто работать с мета данными, вы можете прочитать в статье Как задавать мета свойства в 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”);
}
В шаблоне элемента мы задаем код “какой заголовок задать на странице”. Не забудьте в настройках компонента выбрать “свойства на детальной странице” чтобы не грузить страницу лишними запросами, то есть – выбрать свойства которые используются на этой странице.
Дмитрий, добрый день! В этой статье, по выводу пользовательского поля, использовал Ваш код, но почему то закрывающий php тег не активен. И в какой шаблон компонента нужно устанавливать Ваш код, может проблема в этом.
Я использовал
D:\OSPanel\domains\my_site\local\templates\my_site_template\components\bitrix\catalog\main\bitrix\catalog.section\.default\template.php. Отрабатываю навыки на локальном сервере. Заранее спасибо за ответ!
Здравствуйте, сбросьте ваш код мне на емейл, гляну
Здравствуйте, Дмитрий! Скажите, пожалуйста, как добавить информацию на вкладку карточки товара? Внизу три вкладки – описание, которое можно править визуальным редактором, таблица размеров и отзывы. Хочу загрузить в таблицу размеров саму таблицу. Как это сделать в админке просто и быстро? Буду очень признательна за помощь!
ответил вам на емейл
Дмитрий добрый день! Спасибо, отличный урок. Немогли бы подсказать пожалуйста, как решить такую задачу. Через компонент 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”];
}
?>
Здравствуйте, извиняюсь что долго не отвечал, ваш комментарий почему-то залетел в спам =\ Этот вопрос еще актуален?
$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
);
Подскажи почему пользовательское свойство не возвращается
потому что не правильный код:
$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_*’)
);
спасибо, вы очень помогли
Рад, что был вам полезен 🙂 Заходите к нам еще
Коротко, ясно и по делу! Спасибо, друг.
Благодарю за отзыв 😉
Здравствуйте! Подскажите пожалуйста как можно вывести дополнительные свойства раздела (тип файл), но не в каталоге, а например на главной странице в слайдере вывести “Лучшие категории”, с дополнительным пользовательским свойством в виде картинки?
Добрый день. В массиве выбора укажите символьный код свойства “тип файл”, например UF_FILE (если вы его так назвали). На выходе у вас будет число по которому нужно будет получить путь к картинке (это идентификатор файла). Как это сделать вы можете прочитать тут – https://forwww.com/how-to-get-path-to-image-in-1c-bitrix/
Здравствуйте, Дмитрий.
Из 1с не получилось выгрузить доп. свойство для раздела.
Нужно менять код загрузчика?
Здравствуйте, к сожалению не знаю в каком виде приходит ваше свойство из 1С, и каким образом стандартный обмен с 1С заполняет пользовательские свойства.
Если бы речь шла про заполнение данного свойства при помощи API Битрикс, то тут даже документация дает пример: