Телеграм: @camouf_ru Почта: mihail@bazarow.ru

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

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

Иногда, выводить элементы инфоблока с помощью компонентов, может оказаться избыточным. Например, если нужно вывести элементы инфоблока для реализации слайдера в шаблоне. Расскажу как вывести с помощью 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"]);
Павел Березовский 14.01.2020
Доброго времени, Михаил. Прошу помощи. Суть в следующем : есть 2 компонента, news.list и catalog.element. В первом компоненте реализован счетчик обратного времени, привязан к свойству ИБ(SHOW_TIMER) Можно ли мне с помощью АПИ Битрикса выводить этот счетчик во втором компоненте?
Андрей Белый 24.09.2019
Вопрос решен
Андрей Белый 24.09.2019
Добрый день!
Подскажите пожалуйста, как вывести элементы конкретно раздела инфоблока?
Михаил Базаров 27.08.2019
Цитата
Алексей Иванов написал:
Подскажите как проверить на наличие элементов в инфоблоке?
Если пусто то вообще не выводит ни чего.
Если пусто-то ни чего и не выведется. Если правильно понял вопрос.
Алексей Иванов 26.08.2019
Подскажите как проверить на наличие элементов в инфоблоке?
Если пусто то вообще не выводит ни чего.
Алексей Иванов 26.08.2019
Добрый день.
Сдела слайдер.
Если все слайды удалить, то выводится пустой html.
Делал проверку типа такой:
if ($arItem = $rsItems->GetNext()){    // есть такой элемент }
Тогда даже есть 1 слайд не выводит ни чего.
Mansher 19.07.2018
Не могу найти шаблон, где прописан текст описание товара на детальной странице и где может быть изображение.
Mansher 19.07.2018
В Вашем видео-" Трансляция фейловая  Базовая верстка карточки товара" (на примере интернет-магазина велосипедов) я так и не дождалась как Вы перенесёте текст с описанием товара в левую часть блока, под картинку велосипеда. Именно к такому виду мне нужно привести свою детальную страничку. Чтобы все свойства были справа от картинки, а описание слева, под картинкой.
Михаил Базаров 19.07.2018
Цитата
Mansher написал:
Нет всё-равно не получается(
Вы, так понимаю, картинку пытаетесь вставить. Нужно прямо текстом в тег <...>
Mansher 19.07.2018
Нет всё-равно не получается(
Михаил Базаров 18.07.2018
Цитата
Mansher написал:
не получается Вам код отобразить...
Иконка в панели пятая справа <...> для вставки кода
Mansher 18.07.2018
не получается Вам код отобразить...
Mansher 18.07.2018
Михаил, подскажите пожалуйста! Как отобразить иконки на детельной странице-горизонтально? у меня их 4 и они идут одна под другой, а мне нужно 4 в один ряд. Спасибо!
Сергей Стефанович 27.02.2018
Цитата
Михаил Базаров написал:
Тоже самое на D7

Подключаем модуль

use Bitrix\Main\Loader; Loader::includeModule('iblock');
$dbItems = \Bitrix\Iblock\ElementTable::getList(array(
А можно полный пример кодом? не совсем понял что нужно сделать.
Михаил Базаров 28.10.2017
Тоже самое на D7

Подключаем модуль

use Bitrix\Main\Loader; Loader::includeModule('iblock');
$dbItems = \Bitrix\Iblock\ElementTable::getList(array(
Александр Силуянов 06.07.2017
Цитата
Михаил Базаров пишет:
Цитата
Александр Силуянов написал:
Вывод элементов с помощью API битрикс
Array("IBLOCK_ID" => $iblock_id, "SECTION_ID" => ТУТ_ID_РАЗДЕЛА),

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

В общем, собирайте в массив все известные параметры элементов
Александр Силуянов 03.07.2017
Михаил, а как вывести таким методом новости из одного раздела у которого известно ID?
Спасибо.
Михаил Базаров 23.08.2016
Цитата
Ренат Рахимов пишет:
такой же слайдер по Вашему уроку сделал.

вопрос вот какой: Как сделать такой же слайдер в карточке товара например, т.е. вызвать только значения поля MORE_photo и запихать эти фотки в DIVы
Можно вот так https://camouf.ru/blog-note/301/ само собой, вместо фансибокса воспользуйтесь скриптами и верстой слайдера

Работы из портфолио

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