Документация

Из чего состоит тема

Полный список файлов и шаблонов: какая страница каким файлом рисуется и что будет, если файла нет.

На этой странице

Тема — это папка с четырьмя частями: манифест, шаблоны, файлы оформления и тексты.

themes/ваша-тема/
    theme.json          манифест: имя, версия и настройки темы
    templates/          шаблоны страниц
    assets/             css, js, картинки, шрифты
    locale/             надписи темы: ru.json, uk.json, en.json

Магазин считает папку темой, только если в ней лежит theme.json. Всё остальное необязательно — тема без единой картинки и без единого перевода работает.

Шаблоны

Имя файла страницы — это ещё и название раздела витрины: оно приходит в шаблон переменной $action (у главной — default). По ней удобно подсвечивать активный пункт меню.

Если файла страницы нет, страница не откроется. Магазин не подставляет шаблон из базовой темы вместо отсутствующего: наследования между темами нет намеренно, иначе тема начинала бы зависеть от чужих правок. Копия базовой темы получает сразу все файлы, и лишние можно спокойно удалить только вместе с разделом, который они рисуют.

Каркас и страницы

Файл Что рисует
layout.html общий каркас: <head>, шапка, подвал; от него наследуются все страницы
home.html главная
category.html категория товаров
product.html карточка товара
page.html информационная страница, созданная владельцем
search.html результаты поиска
brand.html товары одного бренда
brands.html список всех брендов
tag.html товары по метке
tags.html список всех меток
compare.html сравнение товаров
favorites.html избранное
404.html страница не найдена
maintenance.html магазин временно закрыт

Корзина и оформление заказа

Файл Что рисует
checkout/cart.html корзина
checkout/layout.html оформление заказа целиком
checkout/partials/shipping.html список способов доставки
checkout/partials/payment.html список способов оплаты
checkout/success.html «заказ принят»
checkout/error.html ошибка при оформлении
checkout/pay.html страница оплаты заказа
checkout/pay-error.html ошибка оплаты

Оформление заказа — одна страница. Контакты, доставка, оплата и подтверждение стоят на ней друг под другом, всё это рисует checkout/layout.html. Отдельных страниц-шагов у оформления нет.

Владелец магазина может включить настройку «оформление в один шаг» — тогда корзина и оформление показываются вместе, и значок корзины ведёт сразу на оформление. Отдельная страница корзины при этом никуда не девается, просто покупатель на неё не попадает. Куда вести значок, спрашивают у магазина: {$shop->cartPath()}.

В базовой теме рядом лежат файлы checkout/delivery.html, checkout/payment.html и checkout/confirm.html — заготовки, оставшиеся от ранней разработки. Их никто не подключает, менять их бессмысленно, а в своей теме их можно удалить.

Личный кабинет покупателя

Файл Что рисует
account/layout.html каркас кабинета с меню разделов
account/login.html вход
account/register.html регистрация
account/forgotpassword.html восстановление пароля
account/reset.html ввод нового пароля
account/verify.html подтверждение почты
account/phone.html подтверждение телефона
account/dashboard.html обзор кабинета
account/orders.html список заказов
account/order.html один заказ
account/partials/orders-table.html таблица заказов, общая для обзора и списка
account/profile.html профиль покупателя
account/favorites.html избранное внутри кабинета

Куски, которые включаются в страницы

Лежат в partials/ и подключаются тегом {include}.

Файл Что рисует
partials/header.html шапка сайта
partials/footer.html подвал
partials/catalog-menu.html меню каталога
partials/breadcrumbs.html хлебные крошки
partials/product-card.html карточка товара в списке
partials/filters.html панель фильтров
partials/active-filters.html чипсы выбранных условий фильтра
partials/pagination.html постраничная навигация
partials/reviews.html отзывы о товаре
partials/questions.html вопросы о товаре
partials/captcha.html проверка «я не робот»
partials/social-login.html кнопки входа через соцсети
partials/socials.html значки соцсетей и мессенджеров
partials/accessories-popup.html окно «возьмите к этому» после покупки из каталога

Блоки главной

Лежат в blocks/ и собираются на главной в нужном вам порядке.

Файл Что рисует
blocks/hero.html большой баннер
blocks/hero-slider.html слайдер баннеров
blocks/category-tiles.html плитки категорий
blocks/product-list.html подборка товаров списком
blocks/product-slider.html подборка товаров каруселью
blocks/reviews.html последние отзывы
blocks/news.html новости
blocks/seo-text.html текст под товарами

Шаблоны дополнений

Папка templates/plugins/ принадлежит не теме, а дополнениям. Когда владелец магазина ставит дополнение, оно кладёт туда свои шаблоны:

templates/plugins/
    promotions/     Акции
    web-chat/       Чат на сайте
    buy-one-click/  Купить в один клик
    …

Эти файлы правятся как любые другие — вид блока дополнения меняете вы. Но в пакет темы они не попадают: у клиента там будут его дополнения, а не ваши.

Файлы оформления

assets/
    css/            стили темы
    js/             скрипты темы
    img/            картинки: логотип, заглушки, значки
    vendor/         сторонние библиотеки, если они нужны
    plugins/        стили дополнений — как и templates/plugins, не ваши

Всё, что лежит в assets/, магазин отдаёт браузеру по адресу /theme-assets/имя-темы/…. Внутри шаблона этот адрес всегда есть готовым:

<img src="{$theme.assets}/img/logo.svg" alt="">

Файлы за пределами assets/ браузеру не отдаются. Шаблоны, манифест и переводы прочитать снаружи нельзя — это защита, а не недоработка.

Тексты темы

locale/
    ru.json
    uk.json
    en.json

Обычные файлы вида «ключ — надпись», по одному на язык. Подробности — на странице Тексты темы и языки.

Чего в теме нет

Наследования между темами. Тема самостоятельна: копия базовой темы — это полная копия, а не ссылка на неё. Обновление базовой темы вашу тему не тронет.

Своих таблиц в базе. Тема ничего не хранит, кроме собственных настроек, и те лежат у витрины, а не у темы. Поэтому смена темы ничего не ломает: вернули прежнюю — вернулись и её настройки.

Своего кода на сервере. Если нужно новое поведение — считать что-то по-своему, сходить во внешний сервис, добавить раздел витрины, — это делает дополнение, а не тема. Дополнение при этом кладёт свою разметку в вашу тему, и вы её оформляете.

Обновлено 25 августа 2026