Компоненты
В DPCMS логика на фронте разнесена по компонентам — независимым блокам, каждый со своим PHP-классом и набором шаблонов. Каждый компонент решает узкую задачу и не знает о соседях: можно отключить любой, и остальные продолжат работать.
Зоны ответственности
- Контент и навигация — отрисовка страниц по дереву разделов, хлебные крошки, меню, карта сайта, привязка шаблона к типу.
- Каталог и списки — выборки объектов с пагинацией, сортировкой, фильтрами по свойствам, поиск, тегирование, сравнение, избранное.
- Магазин — корзина, оформление заказа, бонусы, промокоды, доставки (СДЭК/Pickpoint/Hermes), оплаты (YooKassa, Сбер, Робокасса).
- Интеграции учётных систем — синхронизация товаров и заказов с МойСклад, 1С, передача лидов в Bitrix24, маркетинг через Mindbox.
- Маркетплейсы и фиды — генерация YML для Яндекс.Маркета, XML для Google Merchants, выгрузки в Озон.
- Связь с клиентом — конструктор форм, email-рассылки, SMS, Calltouch, отзывы и комментарии, вопрос-ответ.
- Авторизация и личный кабинет — регистрация, вход, восстановление пароля, история заказов, права групп.
Как они устроены
Каждый компонент изолирован: своя БД-таблица настроек, свои шаблоны, свой жизненный цикл. Один и тот же компонент можно использовать на странице несколько раз с разными параметрами — например, вывести два разных списка с разной фильтрацией.
Параметры передаются в момент использования: имя секции, шаблон отображения, сортировка, лимит, кастомные фильтры. Это означает, что новые блоки на странице обычно добавляются без правки кода — только настройкой в админке.
Расширяемость
Свой компонент пишется по тому же контракту: класс с методом run(), набор HTML-шаблонов, регистрация в админке. После этого он доступен везде наравне со штатными.