Bitrix получить имя раздела

Имена

Вывод названия раздела инфоблока

Есть инфоблок типа новости. Там сделано несколько разделов.

Хочу сделать возможной вывод списка новостей принадлежащих только конкретному разделу. Как это сделать?

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

Так же очень хотелось бы узнать как вывести на странице список всех разделов инфоблока?

Цитата
Хочу сделать возможной вывод списка новостей принадлежащих только конкретному разделу. Как это сделать?

Используйте стандартный компонент Список новостей. Там указываете код раздела, из которого выводятся новости.

Цитата
Так же очень хотелось бы узнать как вывести на странице список всех разделов инфоблока?

Для этого тоже можно использовать стандартный компонент «Структура разделов».

Вопрос в продолжение:
А как можно получить древовидный список элементов инфорблока? В моем случае есть описания модулей системы, собранные по подразделам и хотелось бы получить следующий вид:

Сейчас я это сделал так:
Использовал компонент «Структура разделов» для вывода разделов, в его шаблон в цикле вставил вызов компонента список новостей с заданным ID раздела, который ссылается на компонент «Детальное описание».

Хотелось бы знать, не изобрел ли я велосипед, и м.б. есть способ проще. Кроме того, при этом наблюдается непонятный глюк: для вызоваемых в цикле компонентов списка новостей для редакторов даже в режиме просмотра сайта отображаются кнопки включаемых областей, которые, конечно, не функционируют, но вид портят. Для обычного пользователя все нормально.

Цитата
Вячеслав Кубаев пишет:
Вопрос в продолжение:
А как можно получить древовидный список элементов инфорблока? В моем случае есть описания модулей системы, собранные по подразделам и хотелось бы получить следующий вид:

Элемент 1
Элемент 2
Раздел 2

Элемент 1
Элемент 2

При этом по нажатии на ссылку элемента должно открываться описание этого элемента.

Вопрос актулен. Можно ли реализовать даннную возможность стандартными средствами?

Источник

Как выбрать все вложенные разделы указав ID родителя

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

‘INCLUDE_SUBSECTIONS’=>’Y’ не помогает, тк он выбирает вложенные разделы первого уровня. А у вложенных разделов, есть еще вложенные разделы.

Здоровье
—Медицинские кадры
—Качество медицинских услуг
—Лекарственное обеспечение
—Нацпроект «Здоровье»
——материнство и детство
——медпомощь больным с сердечно-сосудистыми заболеваниями
——Медпомощь при ДТП
——онкологическая помощь
—Профилактика
—Санаторно-курортное лечение

а как сделать, чтобы выбирались все?

Цитата
Александр Кудин пишет:
в arrFilter добавь элемент с ключом DEPTH_LEVEL и со значением 3

Не работает:
$arFilter = Array(‘IBLOCK_ID’=>10,’SECTION_ID’=>23, ‘INCLUDE_SUBSECTIONS’ =>’Y’, ‘DEPTH_LEVEL’ =>3);

не выводит ничего

т.к. раздел 23 имеет ‘DEPTH_LEVEL’ 2. Вот так работает:

$arFilter = Array(‘IBLOCK_ID’=>10,’SECTION_ID’=>23, ‘INCLUDE_SUBSECTIONS’ =>’Y’, ‘DEPTH_LEVEL’ =>2);

Цитата
Андрей Антипов пишет:
http://dev.1c-bitrix.ru/support/faq/8368/#112801

Аналогичная проблема: в инфоблоке три раздела, вложенность каждого из которых нужно посмотреть по отдельности. И указанный выше функционал не подходит..

Ответ нашла в документации, в пользовательских комментариях.

Евгений Жуков 24.05.2011 12:52:29
Пример выборки дерева подразделов для раздела
Код

Считаю, что цикличный запрос в базу данных нагружает сервер и долго загружается..

if($arSelect==’ID’) < //если нужны только ид
$IDon=true;
$arSelect=array(‘ID’,’IBLOCK_SECTION_ID’);
>else <
$arSelect=array_merge(array(‘ID’,’IBLOCK_SECTION_ID’),$arSelect);
>

$obSection=CIBlockSection::GetList(
array(),
array_merge(array(‘IBLOCK_ID’=>$IBLOCK_ID),$arFilter),
false,
$arSelect,
false
);

$arAlId=array(); //Для хранения результатов
$arParent=array(); //Для хранения детей разделов
while($arResult=$obSection->GetNext())<

if(!$IDon) < //Если необходим не только ид
$arId=$arR;
$arR=array();
for($i=0,$k=count($arId);$i Пример использования 1
$arr1=GetAllSectionIn(20, 296, array(), array(‘NAME’));
echo ‘ ‘;

Выведет результат
Array
(
[0] => Array
(
[ID] => 897
[

ID] => 897
[IBLOCK_SECTION_ID] => 896
[

IBLOCK_SECTION_ID] => 896
[NAME] => Готовая основа
[

NAME] => Готовая основа
)

ID] => 898
[IBLOCK_SECTION_ID] => 896
[

IBLOCK_SECTION_ID] => 896
[NAME] => Пищевые ароматизаторы
[

NAME] => Пищевые ароматизаторы
)

ID] => 899
[IBLOCK_SECTION_ID] => 898
[

IBLOCK_SECTION_ID] => 898
[NAME] => Baker Flavors
[

Пример использования 2 (только ид)
$arr1=GetAllSectionIn(20, 896, array(), ‘ID’);
echo ‘ ‘;

Выведет результат
Array
(
[0] => 897
[1] => 898
[2] => 899
[3] => 900
[4] => 901
[5] => 902
[6] => 903
[7] => 904
[8] => 905
[9] => 930
[10] => 931
[11] => 932
[12] => 933
..

Рекомендую кешировать данный запрос.
#450142079

Источник

GetList

Описание

Возвращает список элементов по фильтру arFilter. Метод статический.

Важно! Начиная с версии 18.6.200 модуля Информационные блоки, в методе доступны новые возможности работы с товарами, изменены ключи метода. Читайте подробности в уроке Товары и CIBlockElement::GetList. Соответственно, все параметры вида CATALOG_*** устарели.

Смотрите также

Параметры вызова

При использовании инфоблоков 1.0 можно в IBLOCK_ID передать массив идентификаторов, чтобы сделать выборку из элементов нескольких инфоблоков:
Для инфоблоков 2.0 такая выборка будет работать только в том случае, если в ней не запрашиваются свойства элементов.

В некоторых случаях точное указание IBLOCK_ID в фильтре может ускорить выборку элементов. Так как зависимости сложные, каждый конкретный случай надо рассматривать отдельно.

По умолчанию выводить все поля. Значения параметра игнорируются, если используется параметр группировки arGroupBy.

Частные случаи

Рассмотрим несколько частных случаев фильтрации:

Фильтр со сложной логикой

В этом примере фильтр по свойствам апельсинов является подфильтром инфоблока фруктов.

Поля связанных элементов

Возвращаемое значение

Примеры использования

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

в массиве полученном методом GetNext() необходимо использовать ключ

Свойство типа «справочник» нужно фильтровать по значению UF_XML_ID элемента справочника

Код

Цитата
Алексей Попович пишет:
Если у элемента установлена привязка к нескольким разделам, то функция возвращает только один из этих разделов. Для того, чтобы получить все разделы, к которым привязан элемент, нужно в цикле перебора элементов вызывать функцию
CIBlockElement::GetElementGroups

Более оптимальным будет собрать в цикле id элементов, а потом передать их в CIBlockElement::GetElementGroups, так как она умеет работать с массивом ID.

Для фильтрации по свойству инфоблока типа «Дата/Время» я использую следующий способ:

Код

*************
Комментарий разработчика модуля: в случае MSSQL и Oracle не будет работать

Источник

Читайте также:  Имена существительные множественного числа примеры
Оцените статью
Имя, Названия, Аббревиатуры, Сокращения
Добавить комментарий

Adblock
detector