Вигляди на тегах: які сторінки замінити файлом теми
Будь-яку сторінку сайту можна замінити файлом тегів без PHP: які файли розуміє тема, як створити свій 404 і що доступно у виглядах ядра.
Будь-який вигляд сайту (головну, вхід, реєстрацію, пошук, кабінет, сторінку) можна замінити файлом тегів. Це звичайна HTML-розмітка, у яку вставляються теги {ім’я}, умови [if:ім’я]…[/if] і повтори [each:список]…[/each] (спільна мова тегів, та сама, що в «Новини → Шаблони записів»). Це безпечний аналог файлів шаблонів в інших рушіях: у файлі тегів не можна написати PHP. Рамку сторінки (шапку, меню, колонку, підвал) описує стаття «Головний шаблон сайту на тегах», спільні теги будь-якої сторінки — там само.
Як увімкнути
У вашій темі покладіть файл за шляхом вигляду із закінченням .tpl.html замість .php:
| Що замінюєте | Файл у темі |
|---|---|
| головна розмітка (шапка, місця, вміст, підвал) | themes/НАЗВА/views/layouts/main.tpl.html |
| сторінка сайту | themes/НАЗВА/views/pages/show.tpl.html |
| вхід | themes/НАЗВА/views/auth/login.tpl.html |
| реєстрація, відновлення пароля, скидання, другий чинник, підтвердження пошти, правила | auth/register.tpl.html, auth/forgot.tpl.html, auth/reset.tpl.html, auth/two-factor.tpl.html, auth/verify.tpl.html, auth/rules.tpl.html |
| пошук | search.tpl.html |
| кабінет, безпека, сеанси, приватність | auth/profile.tpl.html, auth/profile-security.tpl.html, auth/profile-sessions.tpl.html, auth/profile-privacy.tpl.html |
| публічний профіль | auth/public-profile.tpl.html |
Свій 404 і будь-яка сторінка файлом теми
Покладіть themes/ТЕМА/views/errors/404.tpl.html (або створіть його командою theme:file, див. нижче), впишіть розмітку з тегами {status}, {message}, {search}, {home} — і сторінка 404 стане вашою. Так само замінюється будь-який файл зі списку: підвал partials/footer.tpl.html, бічна колонка partials/sidebar.tpl.html, повна новина news/show.tpl.html.
Які файли можна замінити і як їх створити
Повний список файлів, які тема може замінити власними (зараз 58: каркас, шапка, підвал, бічна колонка, картка, новини, коментарі, повідомлення, форум, магазин, події, галерея, опитування, пошук, вхід, кабінет, сторінки помилок), покаже команда:
php nex1on theme:files my-site«есть» (є) — файл уже лежить у вашій темі, «—» — сторінку малює рушій. Щоб почати з готового, створіть файл із заготовки (ім’я можна писати як errors/404, errors-404, news::show або повним шляхом):
php nex1on theme:file my-site errors/404Файл з’явиться в themes/my-site/views/errors/404.tpl.html із тегами за замовчуванням: правте його в будь-якому редакторі, сторінка підхопить зміни одразу, без адмінки. Наявний файл команда не затирає (--force — перезаписати).
Немає файлу тегів або він зламаний (наприклад, не закрито блок) — працює звичайний вигляд, сторінка не ламається. Файл тегів у спільній теці теми головніший за вигляд модуля, як і PHP-файл.
Дані вигляду: умови й повтори
Крім спільних тегів у файлі доступні дані, які вигляд отримав від рушія: {ім’я}, {a.b}, [each:список] із {item}, {item.ключ}, {index}, умови [if:ім’я], [if:ім’я=значення], [ifnot:ім’я], опція limit=N. Секретне (ключі захисту форм, паролі, токени, сеанси) та об’єкти через теги не віддаються.
Вигляди ядра на тегах
| Вигляд | Що доступно (крім спільних тегів) |
|---|---|
auth/login | {form} — готова форма входу; слова {t.eyebrow}, {t.title}, {t.lead}, {t.forgot}, {t.no_account}, {t.submit} та інші; {forgot_url}, {register_url}; умова [if:can_register] |
auth/register | {form}, слова {t.…} (префікс auth.register), {forgot_url} |
auth/forgot, auth/reset, auth/two-factor, auth/verify, auth/rules | у кожного {form} і слова {t.…} (префікси auth.forgot, auth.reset, auth.2fa, auth.verify, auth.rules) |
search | {form} (рядок пошуку), {query}, [each:results] ({item.title}, {item.url}, {item.excerpt}…), [each:popular], {found.*}, [if:tooShort], {minimum}, слова {t.…} (search.*) |
auth/profile, auth/profile-security, auth/profile-sessions, auth/profile-privacy | {form} (і {form:2}, {form:3} — решта форм вигляду за порядком), {identity} (шапка кабінету), {profile_nav} (меню кабінету), слова {t.…} (profile.*) |
auth/public-profile | {identity} і дані профілю |
pages/show | {title}, {page.title}, {page.excerpt}, {page.body} (текст сторінки, розмітка рушія), {cover}, [each:trail], [each:children], [each:siblings] |