Middle Компоненты: разработка Обязательно

Создание своего компонента

Собственные компоненты размещаются в каталоге /local/components/<vendor>/<name>/ и наследуют базовый класс CBitrixComponent. Имя PHP-класса компонента обязано быть уникальным во всем проекте во избежание фатальной ошибки повторного объявления, а логика выборки должна быть полностью изолирована от вывода в шаблоне.

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

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

  • 1
    Размещение в /local/components
  • 2
    Namespace компонента
  • 3
    Наследование от CBitrixComponent

Материалы

Проверь себя

Скопировали компонент в соседнюю папку, поправили запросы, и страница с обоими компонентами падает с «Cannot declare class». Почему?

Ядро находит класс не по имени, а включая class.php и сравнивая список объявленных классов до и после. Два class.php с одним именем класса — это повторное объявление. Имя класса должно быть уникальным на весь проект, обычно с префиксом namespace компонента.

Заказчик не видит новый компонент в визуальном редакторе, хотя на странице через IncludeComponent() он работает. Где искать?

В .description.php: без ключа PATH компонент не попадает в дерево редактора, а сам файл в работе компонента не участвует, поэтому на странице всё работает. Проверьте PATH и то, что ID первого уровня не из зарезервированных.

В компоненте есть и class.php, и component.php. Что выполнится?

Только class.php. initComponent() сначала ищет класс, и component.php проверяется лишь когда класса не нашлось. Смешивать два стиля в одной папке бессмысленно.

Чем плохо тащить CIBlockElement::GetList() в template.php, если это работает?

Шаблон выполняется только при сборке кеша и копируется в шаблон сайта при кастомизации; логика в нём не кешируется отдельно, не переиспользуется и живёт в двух копиях после первого копирования шаблона. Данные собирает class.php, шаблон получает готовый $arResult.

Не сходится?

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

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

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

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

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

на связи

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

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

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

Войти