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

З чого складається тема

Повний список файлів і шаблонів: яка сторінка яким файлом малюється і що буде, якщо файлу немає.

На цій сторінці

Тема — це тека з чотирма частинами: маніфест, шаблони, файли оформлення і тексти.

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