Bitrix список разделов инфоблока

Бывают ситуации, когда нужно вывести список элементов или разделов конкретного информационного блока (инфоблока). Воспользуемся CIBlockElement::GetList для элементов и CIBlockSection::GetList для разделов соответственно.

Как вывести список элементов инфоблока в 1С-Битрикс

Для этого создадим тестовую страницу в корне нашего сайта, например test.php . Код нашего файла будет иметь следующий вид:

Как видим, подключается header и footer (заголовок нам не нужен в принципе). Теперь напишем код CIBlockElement::GetList между подключением header и footer.

Код мы написали, теперь давайте посмотрим что мы делаем:

  • подключаем модуль iblock т.к. без него наш код может не работать;
  • задаем переменную, которая равна ID необходимого информационного блока (в моем случае это 14);
  • в переменную записываем CIBlockElement::GetList, иначе не сможем с ним работать;
  • в CIBlockElement::GetList есть массивы с данными:
    Array(«ID» => «ASC») — массив для сортировки, в нашем случае это ID по возрастанию,
    Array(«IBLOCK_ID» => $iblock_id) — массив для фильтрации — мы выбрали только по ID инфоблока,
    false, false — тут можно задать массивы для группировки элементов и выбрать параметры постраничной навигации (как правило, они не нужны, ставим каждому false),
    Array(‘ID’, ‘NAME’, ‘DETAIL_PAGE_URL’) — последний, но не менее важный массив, который вернет выбранные поля. В нашем случае он вернет ID, Имя элемента, полный путь к детальному элементу (его url).
  • выводим по очереди все наши элементы с помощью цикла.

urldecode — я использовал для правильного отображения кириллических урлов (да, их оказывается кто-то еще использует 🙂 ). $ar_fields[‘DETAIL_PAGE_URL’] — выведет вам в каждой строке ссылку на элемент, при желании, вы можете заменить DETAIL_PAGE_URL на ID или NAME и т.д. в зависимости от того, какая перед вами стоит задача.

Важно знать! Если вы не выбираете поля для последнего массива (который обычно называют arSelect), вы рискуете прилично загрузить ваш сервер, ведь он будет тащить для каждого элемента, значения всех его полей. Представьте сколько это запросов к БД.

Как узнать значения свойств инфоблока в Битриксе

Ну хорошо, мы выводим имя, id и ссылку — казалось бы, зачем весь этот цирк? А вот теперь рассмотрим случай, когда мы с помощью GetList можем узнать свойства инфоблока, конкретного элемента. Заменяем наш arSelect, он же массив с выбором полей на
Array(‘ID’, ‘NAME’, ‘DETAIL_PAGE_URL’, ‘PROREPTY_TITLE’)
где, TITLE — это символьный код вашего свойства (а приписка PROREPTY_ служит как раз для того чтобы это и указать).

Отобразить на экран свойство битрикса можно несколькими способами, в зависимости от его типа — строка это или список. Это может быть как

Если у вас что-то не получается, давайте просто выведем список элементов массива:

Кстати, если у вас много элементов в массиве, то для такой цели лучше вывести всего поля первого элемента (это может быть товар, новость и т.д.). Как это сделать? Либо дописать в GetList строку

либо создать счетчик перед массивом и вывести для 1 элемента, примерно вот так:

ПС — показал где писать nTopCount 🙂

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

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

Если вы заметили, у нас теперь массив с выбором по порядку четвертый а не пятый и добавился параметр » ACTIVE» => «Y» , который выводит только активные «разделы»(это работает и для CIBlockElement, просто в данном скрипте нашими элеменами являются разделы инфоблока). Принцип работы с CIBlockSection::GetList почти такой же, как и с CIBlockElement. В данном скрипте мы выводим символьный код разделов, предварительно преобразовав в читаемую кириллицу.

автор: Dmitriy

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

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

Должна получиться структура из трёх уровней:
сайт/магазины/разделы магазинов/список элементов внутри раздела

в админке это вот так выглядит:

В магазинах будут разделы плиткой, по клику на раздел — список элементов (обычные картинки), всё просто.

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

Возвращает список разделов, отсортированных в порядке arOrder по фильтру arFilter. Нестатический метод.

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

ПараметрОписаниеС версии
arOrderМассив для сортировки, имеющий вид by1=>order1[, by2=>order2 [, ..]], где by1, . — поле сортировки, может принимать значения:
    > Кроме того, сортировка возможна и по пользовательским свойствам UF_XXX.

Значение по умолчанию Array("SORT"=>"ASC") означает, что результат выборки будет отсортирован по возрастанию. Если задать пустой массив Array(), то результат отсортирован не будет.

arFilterМассив вида array("фильтруемое поле"=>"значение" [, . ]). Фильтруемое поле может принимать значения:
  • ACTIVE — фильтр по активности (Y|N);
  • GLOBAL_ACTIVE — фильтр по активности, учитывая активность вышележащих разделов (Y|N);
  • NAME — по названию (можно искать по шаблону [%_]);
  • CODE — по символьному коду (по шаблону [%_]);
  • XML_ >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.

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

Значения фильтра одиночное значение или массив.

Необязательное. По умолчанию записи не фильтруются.

bIncCntВозвращать ли поле ELEMENT_CNT — количество элементов в разделе. При этом arFilter дополнительно обрабатывает следующие фильтруемые поля:
  • ELEMENT_SUBSECTIONS — подсчитывать элементы вложенных подразделов или нет (Y|N). По умолчанию Y;
  • CNT_ALL — подсчитывать еще неопубликованные элементы (Y|N). По умолчанию N. Актуально при установленном модуле документооборота;
  • CNT_ACTIVE — при подсчете учитывать активность элементов (Y|N). По умолчанию N. Учитывается флаг активности элемента ACTIVE и даты начала и окончания активности.

Необязательный параметр, по умолчанию равен false.

Примечание: в случае если в фильтре есть ключ PROPERTY то в количестве элементов вернется то значение, которое попадает под этот фильтр по значению свойств.

Оцените статью
Много толка
Добавить комментарий