Структура компонентов в 1C-Битрикс: разбор с примерами

Структура компонентов в 1C-Битрикс: разбор с примерами
12 сентября 2025
2 мин.
301
28 сентября 2025

Где лежат компоненты

Компоненты в Битрикс размещаются в двух местах:

  • /bitrix/components/ — системные компоненты (их лучше не трогать, иначе при обновлении всё затрётся).
  • /local/components/ — пользовательские компоненты. Всегда кладите свои разработки сюда: это упростит поддержку и защитит код при апдейтах.

Общая структура

Пример дерева папок:

/local/components/
└── namespace/
    └── news.list/
        ├── lang/
        │   └── ru/
        │       ├── .description.php
        │       └── .parameters.php
        ├── templates/
        │   └── .default/
        │       ├── template.php
        │       ├── result_modifier.php
        │       ├── component_epilog.php
        │       ├── script.js
        │       └── style.css
        ├── .description.php
        ├── .parameters.php
        ├── ajax.php
        ├── class.php
        └── component.php

Основные файлы и папки

1. class.php

  • Что это: основной файл бизнес-логики (D7-подход).
  • Как работает: описывает класс, наследуемый от CBitrixComponent. Здесь готовятся данные для шаблона.

Пример:

class ExampleComponent extends CBitrixComponent
{
    public function executeComponent()
    {
        $this->arResult['DATA'] = $this->getData();
        $this->includeComponentTemplate();
    }

    private function getData()
    {
        return ['example' => 'data'];
    }
}

👉 Лучше всегда использовать именно class.php, а не устаревший процедурный component.php.

2. component.php

  • Что это: старый процедурный способ написания компонентов.
  • Когда нужен: только если вы сознательно не используете D7 (новые проекты — почти никогда).

3. .description.php

  • Что это: описание компонента для визуального редактора.
  • Зачем нужно: без него компонент не появится в списке в админке.
  • Подводный камень: ошибки в этом файле могут ломать сохранение страниц в публичной части — имейте в виду.

4. .parameters.php

  • Что это: описание входных параметров компонента.
  • Где работает: параметры настраиваются в админке.
  • Пример: выбор эффекта и времени смены слайдов для слайдера.

5. lang/

  • Что это: папка для языковых файлов.
  • Зачем нужна: выносите все надписи в $MESS, чтобы не плодить «жёстко прошитые» строки.

Пример:

$MESS['T_NEWS_NEWS_NA'] = "Раздел не найден.";

6. templates/

  • Что это: шаблоны отображения компонента.
  • Важно: вся HTML-разметка должна быть здесь, а не в бизнес-логике.
  • Шаблон .default: подключается автоматически, если другой не указан.

7. template.php

  • Что это: основной файл шаблона, именно он формирует вывод на страницу.

8. result_modifier.php

  • Что это: файл для предобработки массива $arResult перед шаблоном.
  • Особенность: кешируется. Удобно для мелкой логики: например, подготовки картинок или формирования удобных структур.

9. component_epilog.php

  • Что это: подключается после шаблона.
  • Особенность: не кешируется — можно вставлять счётчики, доп.скрипты, что угодно.

10. script.js, style.css, images/

  • Опциональные файлы для клиентской части (JS, CSS, картинки).
  • Подключаются автоматически, если находятся в папке шаблона.

Жизненный цикл компонента

  1. Инициализация (чтение параметров).
  2. Выполнение логики (class.php или component.php).
  3. Формирование массива $arResult.
  4. Передача данных в шаблон.
  5. Кеширование результата (если включено).

Рекомендации

  • Используйте D7-подход — это современно и поддерживается лучше.
  • Добавляйте .description.php (иначе в редакторе компонент будет «невидимым»).
  • Разделяйте логику и представление.
  • Локализуйте текст через lang/.
  • Настраивайте кеширование, особенно для тяжёлых выборок.
  • Делайте несколько шаблонов под разные задачи (например, список новостей и плитка).