Вывод элементов с помощью API битрикс

Просмотров: 28280

Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Например, если нужно вывести элементы инфоблока для реализации слайдера в шаблоне. Расскажу как вывести с помощью API Битрикс CIBlockElement::GetList

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

Но, что бы листинг шаблона был не очень длинным, если таких вставок достаточно много, эффективнее выводить с помощью API

<?
 if (CModule::IncludeModule("iblock")):
 $iblock_id = 11; // ID инфоблока из которого выводим элементы
 $mySlider = CIBlockElement::GetList (
 // Сортировка элементов
     Array(
        "ID" => "ASC"
    ),
     Array(
        "IBLOCK_ID" => 
        $iblock_id
    ),
    false,
    false,
    // Перечисляесм все свойства элементов, которые планируем выводить
    Array(
         'ID',
         'NAME',
         'PREVIEW_PICTURE',
         'PREVIEW_TEXT',
         'PROPERTY_LIN_PR'
     )
 );
 while($arFields = $mySlider->GetNext())
 {
 //Выводим элемент со всеми свойствами + верстка
 $img_path = CFile::GetPath($arFields["PREVIEW_PICTURE"]);
 echo '<li><a href="'.$arFields['PROPERTY_LIN_PR_VALUE'].'">';
 echo '<h4>'.$arFields['NAME']."</h4>";
 echo "<img src='".$img_path."'/>";
 echo "<p>".$arFields['PREVIEW_TEXT']."'</p>";
 echo '</a></li>';
 }
 endif;
 ?>

Если попробуете вывести свойство типа HTML/TEXT получите Array. Для его вывода используйте конструкцию

echo htmlspecialcharsBack($ar_fields['PROPERTY_КОД_СВОЙСТВА_VALUE']["TEXT"]);

Тоже самое с использованием D7

use Bitrix\Main\Loader;
use Bitrix\Iblock\ElementTable;
use Bitrix\Iblock\PropertyTable;
use Bitrix\Main\Entity;

$iblockId = 11; // ID инфоблока из которого выводим элементы

if (Loader::includeModule("iblock")) {
    $sliderElements = ElementTable::getList([
        'select' => [
            'ID',
            'NAME',
            'PREVIEW_PICTURE',
            'PREVIEW_TEXT',
            'PROPERTY_LINK_PR' => 'PROPERTY_LINK_PR.VALUE',
        ],
        'filter' => [
            'IBLOCK_ID' => $iblockId,
        ],
        'order' => [
            'ID' => 'ASC',
        ],
    ]);

    while ($element = $sliderElements->fetch()) {
       var_dump($element); // Все теже поля что и примером выше
    }
}

Этот код использует пространство имен Bitrix\Main и классы D7, чтобы получить элементы инфоблока, выбрать необходимые свойства и вывести их данные.

Александр Силуянов 06.07.2017
Цитата
Михаил Базаров пишет:
Цитата
Александр Силуянов написал:
Вывод элементов с помощью API битрикс
Array("IBLOCK_ID" => $iblock_id, "SECTION_ID" => ТУТ_ID_РАЗДЕЛА),

В общем, собирайте в массив все известные параметры элементов
Последний вопрос: количество элементов ограничить в таком методе возможно?
Гость 07.12.2022
Сделал слайдер таким способом. Но возник вопрос:
А как при этом методе вывести, скажем, 10 последних элементов инфоблока?
Михаил Базаров 07.12.2022
Цитата
Гость написал:
Сделал слайдер таким способом. Но возник вопрос:
А как при этом методе вывести, скажем, 10 последних элементов инфоблока?


У CIBlockElement::GetList есть параметры для отбора элементов

nTopCount - ограничить количество сверху.
nOffset - смещение.
nElementID; - ID элемента, который будет выбран вместе со своими соседями.

Подробнее в документации
Михаил Базаров 27.11.2023
В D7 варианте добавляем в массив

Код
'select'  => ... // имена полей, которые необходимо получить в результате
'filter'  => ... // описание фильтра для WHERE и HAVING
'group'   => ... // явное указание полей, по которым нужно группировать результат
'order'   => ... // параметры сортировки
'limit'   => ... // количество записей
'offset'  => ... // смещение для limit
'runtime' => ... // динамически определенные поля
Андрей 04.07.2024
Подскажите, а как таким способом вывести множественное свойство Привязка к элементам?

Блог-note: заметки разработчика

Автоматически отгрузить заказ и сменить статус отгрузки, при выполнении заказа.

Проблема: Заказы, на сайте, обрабатываются только в 1С. При этом 1С не работает с отгрузками и обменивается только стату...

Кнопка для отправки на печать карточки товара, без лишних данных

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

Вывести информацию, только на первом уровне раздела каталога, в 1С-Битрикс

Задача: на сайте, в каталоге, выводится два фильтра - боковой и верхний. Оба компонента подключены в файле section.php к...

Time Capsule на Windows 10. Хранение бекапов Time Machine на компьютере с Windows 10

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

Вывести все товары, с постраничной навигацией, из всех разделов инфоблока

По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е товаров вывести все товары вс...

Наличие на складах в умном фильтре 1С-Битрикс, с автоматическим обновлением

Задача: добавить возможность фильтрации товаров по складам в умном фильтре. Данные должны обновляться автоматически, при...

Менять большую картинку, при клике на маленькую, в детальной карточке

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

Input Type File, множественный с дропзоной и показом превью

Задача: Сделать возможность загрузки файлов в множественный input type="file" c помощью drag&drop и показом превью загру...

Умный фильтр на главной странице Битрикс

Редкая но востребованная задачка- это вывести компонент "умный фильтр" на главную страницу магазина на Битрикс. При этом...