Вы создали инфоблок в админке, добавили три карточки услуг, повесили компонент на страницу /services/ - и видите белый экран. Знакомо: тип есть, элементы в списке есть, а на сайте пусто. Чаще всего виноваты неактивные записи, снятые галки в компоненте или неверный ID инфоблока. Ниже - полный цикл для 1С-Битрикс: Управление сайтом: от типа и свойств до первой записи на публичной странице без копирования официальной документации целиком.
Инфоблок - это "таблица контента" внутри CMS: тип задаёт группу (новости, услуги), внутри - свойства, разделы и элементы. Сначала соберите структуру в админке (вечер 1), затем добавьте тестовый элемент и выведите его компонентом news.list (вечер 2). Перед публикацией проверьте активность элемента, права "Чтение" для всех и IBLOCK_ID в настройках компонента.
Речь только про 1С-Битрикс: Управление сайтом на вашем сервере. Часть гайдов в поиске описывает облачную CRM того же вендора — у неё другая админка и нет привычного «Контент → Инфоблоки»; не путайте продукты..
Разберите, зачем инфоблок вместо статической страницы
Статическая страница в визуальном редакторе подходит для "О компании" или лендинга из пяти блоков. Инфоблок нужен, когда однотипных записей много и они меняются: новости, услуги, кейсы, статьи блога. Вы один раз настраиваете поля и шаблон вывода, а редакторы добавляют карточки без правки HTML всей страницы.
| Задача | Статическая страница | Инфоблок |
|---|---|---|
| Десятки однотипных карточек | Каждая правка вручную в редакторе | Форма элемента + автоматический список |
| Фильтр по свойствам | Сложно и ломается при обновлении | Свойства типа "список", фильтр в компоненте |
| Отдельный URL каждой записи | Нужна ручная страница на каждую новость | ЧПУ элемента из символьного кода |
| Миллионы строк справочника | Не подходит | Лучше Highload-блок, не обычный IB |
Делайте: заводите инфоблок для повторяющегося контента с разделами и детальными страницами. Не делайте: не плодите отдельные статические страницы под каждую новость - через полгода править их станет больно.
Создайте тип инфоблока и сам инфоблок в админке
Иерархия в CMS выглядит так: тип инфоблока → инфоблок → свойства → разделы → элементы → компонент на сайте. Тип - это "папка" для однородных блоков (например, "Контент сайта"); внутри типа живут конкретные инфоблоки "Новости" или "Услуги".
| Этап | Где в админке | Результат вечера |
|---|---|---|
| Вечер 1 - структура | Контент → Инфоблоки → Типы инфоблоков | Тип, инфоблок, свойства, права доступа |
| Вечер 2 - вывод | Контент → [ваш тип] → элементы; публичная страница | Активный элемент виден через news.list |
- Откройте Контент → Инфоблоки → Типы инфоблоков. Создайте тип с понятным названием (например, "Контент") или выберите готовый из дистрибутива.
- Нажмите "Добавить инфоблок" внутри типа. Укажите название ("Услуги"), символьный код латиницей (services) и привязку к сайту (поле LID / "Сайты").
- Заполните "Символьный код API" (API_CODE) - латиница без пробелов, например Services. Он нужен разработчику для D7 ORM (современный слой работы с базой через классы Element{ApiCode}Table вместо старых CIBlock::Add).
- Выберите версию хранения свойств: VERSION 2 быстрее при небольшом числе свойств (до 50), VERSION 1 - классика для старых проектов.
- На вкладке "Доступ" выдайте группе "Все пользователи" право "Чтение". Без этого гости увидят пустую страницу даже при активных элементах.
- Сохраните и запишите числовой ID инфоблока из списка - он понадобится в параметре IBLOCK_ID компонента.
Делайте: сразу задайте уникальный символьный код и API_CODE. Не делайте: не копируйте ID инфоблока с чужого туториала - на вашем сайте он будет другим.
Настройте свойства, разделы и SEO-поля до первого элемента
На вкладке «Свойства» добавьте поля, которые нужны в карточке: строка (цена), список (да/нет), файл (PDF), привязка к разделу.
Подписи «Раздел» и «Элемент» можно переименовать в «Категория услуги» и «Услуга» — редакторам так понятнее.
Разделы нужны при иерархии ("Ремонт" → "Кухни"); для плоских новостей можно обойтись без них. SEO-поля и ЧПУ - в гайде по SEO на Битрикс.
- Добавьте свойства до первого элемента - иначе придётся массово перезаливать контент.
- Для списка "Да/Нет": в фильтре передавайте ID значения свойства, а не текст "ДА".
- Создайте тестовый элемент: Контент → [тип] → [инфоблок] → Добавить. Поставьте галку "Активен", заполните анонс и детальный текст, задайте символьный код для URL.
- Проверьте даты активности - элемент с будущей датой начала на фронте не появится.
Делайте: один тестовый элемент с полным набором полей до подключения компонента. Не делайте: не заливайте сотню карточек, пока не увидели одну на сайте - отладка станет кошмаром.
Выведите инфоблок на сайт через news.list или catalog.section
Компонент берёт данные из инфоблока и рисует HTML. Для новостей и услуг - news.list и news.detail. Для товаров - catalog.section; разбор - в гайде по интернет-магазину.
Схема вывода:
Страница /services/ → компонент news.list (IBLOCK_ID, шаблон) → шаблон компонента рисует карточки → клик ведёт на news.detail по ЧПУ элемента
- Создайте раздел сайта /news/ или /services/ в структуре "Контент".
- Вставьте компонент "Список новостей" (news.list) через визуальный редактор или PHP-вызов в шаблоне.
- Укажите IBLOCK_ID вашего инфоблока - число из списка в админке, не название.
- Включите в FIELD_CODE поля NAME, PREVIEW_TEXT, PREVIEW_PICTURE - иначе список будет пустым визуально при живых данных.
- Выберите шаблон компонента (.default или кастомный в /local/templates/.../components/bitrix/news.list/).
- На композитном сайте снимите SET_STATUS_404 у вспомогательных выводов - иначе страница отдаёт 404.
Делайте: проверьте вывод в режиме инкогнито. Не делайте: не вешайте news.list на главную без кэша при сотнях элементов.
Проверьте права, ЧПУ и причины пустого вывода
Если список пустой, пройдите таблицу симптомов ниже. На практике в девяти случаях из десяти хватает пяти минут в админке — без правки PHP.
В реальном проекте маркетолог видел белую /services/ при трёх карточках в админке: элементы были неактивны, в news.list сняты галки анонса, а в фильтре передали «ДА» вместо ID спискового свойства. Типичная ошибка — искать баг в шаблоне, когда причина в галке «Активен».
| Симптом | Частая причина | Что сделать |
|---|---|---|
| Белая страница, в админке элементы есть | Элементы неактивны или дата начала в будущем | Включить "Активен", проверить период показа |
| Админ видит, гость - нет | Нет права "Чтение" для всех пользователей | Вкладка "Доступ" инфоблока → группа "Все пользователи" |
| Компонент на месте, список пуст | Неверный IBLOCK_ID или сняты FIELD_CODE | Сверить ID, включить NAME и PREVIEW_TEXT |
| Фильтр не отрабатывает | В $arrFilter передали текст вместо ID свойства | Подставить числовой ID значения списка |
| Страница 404 при композите | SET_STATUS_404 = Y у news.list | Отключить для неканонических выводов |
Финальный чек-лист: тип и инфоблок созданы, элемент активен, news.list показывает карточку, детальная открывается по ЧПУ. Разработчику дальше - D7 ORM через Element{ApiCode}Table вместо устаревшего CIBlock::Add.
Делайте: зафиксируйте ID инфоблока в документации проекта. Не делайте: не сбрасывайте кэш на проде без причины.
Нужна настройка структуры контента, вывод нестандартных свойств или аудит пустых разделов - напишите, разберём ваш кейс. Примеры корпоративных сайтов с кастомными инфоблоками - в портфолио.
Автор: Максим Мольков, Senior-разработчик 1С-Битрикс, 8+ лет в веб-разработке.
Источники: dev.1c-bitrix.ru и docs.1c-bitrix.ru.
Частые вопросы
Чем инфоблок отличается от Highload-блока?
Инфоблок - для контента с разделами, картинками и URL страницы: новости, услуги, статьи. Highload - для плоских справочников на сотни тысяч строк без детальных страниц. Подробное сравнение - в гайде по Highload.
Как вывести свой инфоблок на страницу сайта?
Создайте раздел в структуре сайта, вставьте компонент news.list, укажите IBLOCK_ID вашего блока, включите поля NAME и PREVIEW_TEXT в FIELD_CODE и выберите шаблон. Для детальной страницы добавьте news.detail в шаблон раздела.
Какие свойства добавить в инфоблок услуг?
Минимум: анонс и детальный текст из стандартных полей. Дополнительно - цена (строка), срок (число), файл прайса (файл), признак "Популярная" (список). Не плодите десятки свойств "на будущее" - каждое усложняет форму редактору.
Можно ли один инфоблок привязать к нескольким сайтам?
Да, в форме инфоблока в поле "Сайты" (LID) отметьте несколько сайтов в многосайтовой установке. Компонент на каждом сайте должен фильтровать по своему контексту; права доступа настраиваются отдельно для каждой группы пользователей.
Почему news.list пустой, хотя элементы в админке есть?
Проверьте по порядку: элемент активен, дата начала не в будущем, у группы "Все пользователи" есть чтение, IBLOCK_ID в компоненте верный, в FIELD_CODE включены NAME и PREVIEW_TEXT. В девяти случаях из десяти проблема в одном из этих пунктов.
Нужен ли API_CODE, если я не программирую?
Для работы через админку и стандартные компоненты - не обязателен. Заполните его сразу: если позже подключите разработчика для D7 ORM, без API_CODE придётся возвращаться в настройки инфоблока и править интеграции.