Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Отображение списка элементов инфоблока вместе со свойствами.

00 голосов
7
1. Для получения списка элементов инфоблока есть метод CIBlockElement::GetList.
В методе есть параметры для постраничного вывода, такие как номер странице и количество элементов на странице.

Но возникает вопрос как отобразить список страниц. Есть ли специальный класс или компонент для отображения списка страниц или как хотя бы узнать количество элементов.


2. Мне нужно вывести не только названия элементов но и значения свойств.
Значение одного свойства можно получить через CIBlockElement::GetProperty. Однако если нужно вывести 10 свойств, по 20 элементов инфоблока на страницу, то получаем 200 SQL запросов. Это явно многовато.

Предусмотрен ли в API способ запроса элементов со свойствами или нужно самому писать SQL запрос через CDatabase::Query?
спросил 18 Авг, 13 от Eoling (140 баллов)

7 Ответы

00 голосов
Все есть, смотрите сюда
http://dev.1c-bitrix.ru/api_help/main/reference/cdbresult/index.php

CIBlockElement::GetList возвращает тот же CDBResult, что и CDatabase::Query, просто это более удобная обертка для автоматизации формирования запроса.
ответил 18 Авг, 13 от Eddie (2,060 баллов)
00 голосов
Посмотрите самый простой компонент bitrix:news.list
Там всё, что вам надо есть (на сколько помню)
ответил 25 Окт, 13 от sickmind (4,660 баллов)
00 голосов
Спасибо, действительно оказалось можно шаблон для новостей скопировать и подправить.
ответил 29 Янв, 14 от Eoling (140 баллов)
00 голосов
Свойства выводятся отлично, только не разобрался как выводить картинки.
У меня среди свойств есть "лого" куда загружается изображение.

В в шаблоне компонента новостей в $arParams, не смогу отыскать путь до файла или какой-нить ID файла.

Код
array(39) {
...
["PROPERTIES"]=>
  array(26) {
  ...

["logo"]=>
    array(34) {
      ["ID"]=>
      string(2) "32"
      ["TIMESTAMP_X"]=>
      string(19) "2010-08-19 14:48:19"
      ["IBLOCK_ID"]=>
      string(2) "10"
      ["NAME"]=>
      string(12) "Лого проекта"
      ["ACTIVE"]=>
      string(1) "Y"
      ["SORT"]=>
      string(2) "50"
      ["CODE"]=>
      string(4) "logo"
      ["DEFAULT_VALUE"]=>
      string(0) ""
      ["PROPERTY_TYPE"]=>
      string(1) "F"
      ["ROW_COUNT"]=>
      string(1) "1"
      ["COL_COUNT"]=>
      string(2) "30"
      ["LIST_TYPE"]=>
      string(1) "L"
      ["MULTIPLE"]=>
      string(1) "N"
      ["XML_ID"]=>
      NULL
      ["FILE_TYPE"]=>
      string(0) ""
      ["MULTIPLE_CNT"]=>
      string(1) "5"
      ["TMP_ID"]=>
      NULL
      ["LINK_IBLOCK_ID"]=>
      string(1) "0"
      ["WITH_DESCRIPTION"]=>
      string(0) ""
      ["SEARCHABLE"]=>
      string(1) "N"
      ["FILTRABLE"]=>
      string(1) "N"
      ["IS_REQUIRED"]=>
      string(1) "N"
      ["VERSION"]=>
      string(1) "1"
      ["USER_TYPE"]=>
      NULL
      ["USER_TYPE_SETTINGS"]=>
      NULL
      ["PROPERTY_VALUE_ID"]=>
      string(3) "222"
      ["VALUE"]=>
      string(2) "59"
      ["DESCRIPTION"]=>
      NULL
      ["VALUE_ENUM"]=>
      NULL
      ["VALUE_XML_ID"]=>
      NULL
      ["~VALUE"]=>
      string(2) "59"
      ["~DESCRIPTION"]=>
      NULL
      ["~NAME"]=>
      string(12) "Лого проекта"
      ["~DEFAULT_VALUE"]=>
      string(0) ""
    }


Подскажите как получить путь к загруженному файлу?
ответил 18 Май, 14 от Eoling (140 баллов)
00 голосов
ответил 14 Сен, 14 от sickmind (4,660 баллов)
00 голосов
Спасибо!
ответил 20 Янв, 15 от Eoling (140 баллов)
00 голосов
Посмотрел код компонента новостей.
Работает он следующим образом.

1. Вытаскивается список всех элементов CIBlockElement::GetList.
2. Для каждого элемента выполняется $obItem->GetProperties();

Если у нас 20 элементов на страницу, то получаем 21 SQL запрос. Если 50 элементов, то 51 запрос.

Теперь мне стало ясно почему Битрикс такой медленный)))

А ведь это наверно можно вытащить одним запросом через JOIN или на крайний случай двумя запросами(один для элементов второй для значений свойств элементов).
ответил 05 Май, 15 от Eoling (140 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 05 Май, 14 от Gibrit (100 баллов)
0 голосов
4 ответов
0 голосов
4 ответов
спросил 29 Дек, 13 от Wildest (500 баллов)
0 голосов
5 ответов
спросил 10 Ноя, 13 от SAT (100 баллов)