Вывод абсолютно любой информации из разделов инфоблока можно сделать при помощи API битрикс. Метод CIBlockSection::GetList. Структура выглядит так:
IBlockResult
CIBlockSection::GetList(
array arOrder = Array("SORT"=>"ASC"), // сортировка
array arFilter = Array(), // фильтр
bool bIncCnt = false, //возвращать ли количество элементов в разделе
array Select = Array(), // что выбираем
array NavStartParams = false //для постраничной навигации
);
Описание использования
Для начала нужно понять какой ID инфоблока взять, допустим мне нужно вывести все пункты меню из разделов инфоблока товаров.
Заходим в админку и находим ID нашего инфоблока из которого надо вывести разделы. Под цифрой "1" настраивается вывод столбцов в списке инфоблоков. Цифра 2 - наш ID, он равен 19. Создадим переменную $arFilter = array('IBLOCK_ID' => 19);
Я понимаю, что мне нужно вывести название раздела, ссылку на него, изображение к нему. Поэтому переменная выборки будет выглядеть так: $arSelect = array('IBLOCK_ID', 'ID', 'NAME', 'SECTION_PAGE_URL', 'DETAIL_PICTURE');
Полный код будет выглядеть так:
<?
//фильтру указываем ID раздела и ID его инфоблока
$arFilter = array('IBLOCK_ID' => 19);
$arSelect = array('IBLOCK_ID', 'ID', 'NAME', 'SECTION_PAGE_URL', 'DETAIL_PICTURE');
$rsSect = CIBlockSection::GetList(
Array("SORT"=>"ASC"), //сортировка
$arFilter, //фильтр (выше объявили)
false, //выводить количество элементов - нет
$arSelect //выборка вывода, нам нужно только название, описание, картинка
);
while ($arSect = $rsSect->GetNext()) {
?><pre><?print_r($arSect)?></pre><?
}
?>
Описание свойств
Выбор пользовательских свойств разделов возможен только при передаче в ключ фильтра IBLOCK_ID одиночного значения.
arOrder
- сортировка контента
- id - код раздела;
- section - код родительской раздела;
- name - название раздела;
- code - символьный код раздела;
- active - активности раздела;
- left_margin - левая граница;
- depth_level - глубина вложенности (начинается с 1);
- sort - индекс сортировки;
- created - по времени создания раздела;
- created_by - по идентификатору создателя раздела;
- modified_by - по идентификатору пользователя изменившего раздел;
- element_cnt - количество элементов в разделе, работает только если bIncCnt = true;
- timestamp_x - по времени последнего изменения.
order1, ... - порядок сортировки, может принимать значения:
- asc - по возрастанию;
- desc - по убыванию.
Кроме того, сортировка возможна и по пользовательским свойствам UF_XXX.
Значение по умолчанию Array("SORT"=>"ASC") означает, что результат выборки будет отсортирован по возрастанию. Если задать пустой массив Array(), то результат отсортирован не будет.
arFilter
- формирует выборку из доступного массива всех инфоблоков
Массив вида array("фильтруемое поле"=>"значение" [, ...]). Фильтруемое поле может принимать значения:
- ACTIVE - фильтр по активности (Y|N);
- GLOBAL_ACTIVE - фильтр по активности, учитывая активность вышележащих разделов (Y|N);
- NAME - по названию (можно искать по шаблону [%_]);
- CODE - по символьному коду (по шаблону [%_]);
- XML_ID или EXTERNAL_ID - по внешнему коду (по шаблону [%_]);
- SECTION_ID - по коду раздела-родителя (если указать false, то будут возвращены корневые разделы);
- DEPTH_LEVEL - по уровню вложенности (начинается с 1);
- LEFT_BORDER, RIGHT_BORDER - по левой и правой границе (используется, когда необходимо выбрать некий диапазон разделов, см. пример №4);
- LEFT_MARGIN, RIGHT_MARGIN - по положению в дереве (используется, когда необходима выборка дерева подразделов, см. пример №4);
- ID - по коду раздела;
- IBLOCK_ID - по коду родительского информационного блока. Обязателен, если нужно получить пользовательское свойство;
- IBLOCK_ACTIVE - по активности родительского информационного блока;
- IBLOCK_NAME - по названию информационного блока (по шаблону [%_]);
- IBLOCK_TYPE - по типу информационного блока (по шаблону [%_]);
- IBLOCK_CODE - по символьному коду информационного блока (по шаблону [%_]);
- IBLOCK_XML_ID или IBLOCK_EXTERNAL_ID - по внешнему коду информационного блока (по шаблону [%_]);
- TIMESTAMP_X - по времени последнего изменения;
- DATE_CREATE - по времени создания;
- MODIFIED_BY - по коду пользователя изменившему раздел;
- CREATED_BY - по содателю;
- SOCNET_GROUP_ID - по привязке к группе Социальной сети;
- MIN_PERMISSION - фильтр по правам доступа, по умолчанию принимает R (уровень доступа Чтение);
- CHECK_PERMISSIONS - если установлено значение "N", то проверки прав не происходит;
- PERMISSIONS_BY - фильтрация по правам произвольного пользователя. Значение - ID пользователя или 0 (неавторизованный).
- PROPERTY - по значениям свойств внутрилежащих элементов, PROPERTY - массив вида Array("код свойства"=>"значение", ...).
- HAS_ELEMENT - по наличию элемента. Используется в компоненте catalog.detail.
Все фильтруемые поля могут содержать перед названием
тип проверки фильтра.
Значения фильтра одиночное значение или массив.
Важно! Чтобы фильтрация выполнялась по пользовательским свойствам, необходимо обязательно передавать в фильтр
IBLOCK_ID. Само свойство надо указывать в виде
UF_...
Необязательное. По умолчанию записи не фильтруются.
bIncCnt
- количество элементов в разделе
Возвращать ли поле ELEMENT_CNT - количество элементов в разделе. При этом arFilter дополнительно обрабатывает следующие фильтруемые поля:
- ELEMENT_SUBSECTIONS - подсчитывать элементы вложенных подразделов или нет (Y|N). По умолчанию Y;
- CNT_ALL - подсчитывать еще неопубликованные элементы (Y|N). По умолчанию N. Актуально при установленном модуле документооборота;
- CNT_ACTIVE - при подсчете учитывать активность элементов (Y|N). По умолчанию N. Учитывается флаг активности элемента ACTIVE и даты начала и окончания активности.
Необязательный параметр, по умолчанию равен false.
Примечание: в случае если в фильтре есть ключ PROPERTY то в количестве элементов вернется то значение, которое попадает под этот фильтр по значению свойств.
Select
- Массив для выборки
- ID - ID группы информационного блока.
- CODE - Символьный идентификатор.
- EXTERNAL_ID или XML_ID - Внешний код.
- IBLOCK_ID - ID информационного блока.
- IBLOCK_SECTION_ID - ID группы родителя, если не задан то группа корневая.
- TIMESTAMP_X - Дата последнего изменения параметров группы.
- SORT - Порядок сортировки (среди групп внутри одной группы-родителя).
- NAME - Наименование группы.
- ACTIVE - Флаг активности (Y|N)
- GLOBAL_ACTIVE - Флаг активности, учитывая активность вышележащих (родительских) групп (Y|N). Вычисляется автоматически (не может быть изменен вручную).
- PICTURE - Код картинки в таблице файлов.
- DESCRIPTION - Описание группы.
- DESCRIPTION_TYPE - Тип описания группы (text/html).
- LEFT_MARGIN - Левая граница группы. Вычисляется автоматически (не устанавливается вручную).
- RIGHT_MARGIN - Правая граница группы. Вычисляется автоматически (не устанавливается вручную).
- DEPTH_LEVEL - Уровень вложенности группы. Начинается с 1. Вычисляется автоматически (не устанавливается вручную).
- SEARCHABLE_CONTENT Содержимое для поиска при фильтрации групп. Вычисляется автоматически. Складывается из полей NAME и DESCRIPTION (без html тэгов, если DESCRIPTION_TYPE установлен в html).
- SECTION_PAGE_URL - Шаблон URL-а к странице для детального просмотра раздела. Определяется из параметров информационного блока. Изменяется автоматически.
- MODIFIED_BY - Код пользователя, в последний раз изменившего элемент.
- DATE_CREATE - Дата создания элемента.
- CREATED_BY - Код пользователя, создавшего элемент.
- DETAIL_PICTURE - Код картинки в таблице файлов для детального просмотра.
Кроме того, можно вывести пользовательские свойства, если задать их код (см. примечание ниже).
arNavStartParams
- Массив для постраничной навигации
Массив для постраничной навигации. Может содержать следующие ключи:
- bShowAll - разрешить вывести все элементы при постраничной навигации;
- iNumPage - номер страницы при постраничной навигации;
- nPageSize - количество элементов на странице при постраничной навигации;
- nTopCount - ограничить количество возвращаемых методом записей сверху значением этого ключа (ключ доступен с версии 15.5.5 ).
Если в параметр передать пустой массив, то результат выборки будет ограничен десятью записями. А если передать значение false - то выборка будет полной.