Junior Инфоблоки: основы Обязательно

Классическое API: CIBlockElement и CIBlockSection

Классическое API на базе CIBlockElement::GetList() и CIBlockSection::GetList() используется в стандартных компонентах и существующем коде. Метод GetNext() экранирует спецсимволы и генерирует ссылки на детальные страницы, а вызовы GetProperties() в цикле по элементам создают проблему N+1 запросов и должны заменяться передачей нужных свойств в аргументы выборки.

1 разработчик прошёл

Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.

Что нужно понимать

  • 1
    CIBlock
  • 2
    CIBlockElement
  • 3
    CIBlockSection

Материалы

Проверь себя

Fatal error: Call to a member function GetNextElement() on a non-object на строке с GetList. Что перепутано?

Порядок аргументов. У CIBlockElement::GetList они позиционные: сортировка, фильтр, группировка (false или массив), навигация (массив или false), список полей. Массив полей на четвёртом месте ядро принимает за навигацию и не возвращает результат.

Вывели PREVIEW_TEXT из GetNext(), и HTML показался тегами как текст. Почему?

GetNext() экранирует HTML во всех полях, чтобы их можно было выводить как есть. Сырые значения лежат в том же массиве под ключом с тильдой: ~PREVIEW_TEXT. Fetch() не экранирует ничего и не строит DETAIL_PAGE_URL.

Почему CIBlockSection::GetList с массивом полей на третьем месте ничего не выбрал?

У разделов другой порядок: сортировка, фильтр, флаг подсчёта элементов bIncCnt, массив полей, навигация. Массив на третьем месте ядро воспримет как флаг, а список полей не получит.

В списке из 10 новостей выполняется 11 запросов. Где искать?

GetProperty() или GetProperties() в цикле по элементам. Нужные свойства добавляют в пятый аргумент GetList как PROPERTY_КОД, и они приходят в той же выборке.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти