Внутренняя страница сложнее главной ровно в одном: у неё есть части, зависящие от места в дереве. Крошки, боковое меню, кнопки «Назад» и «Вперёд» — всё это должно считаться само, иначе смысла в CMS нет.
Скелет шаблона
Он короткий. Всё длинное разъехалось по чанкам и сниппетам, и это нормальный вид шаблона в Evolution.
{{sprite}}
{{header}}
<main class="page__main" id="main">
<section class="page-header page-header--dark page-header--inner">
<div class="container">
[[Breadcrumbs]]
<h1 class="page-header__title">[*pagetitle*]</h1>
<p class="page-header__lead">[*introtext*]</p>
</div>
</section>
<section class="section">
<div class="container">
<div class="page-layout">
[[DocLister? &parents=`[*parent*]` &tpl=`sideItem`]]
<article class="article">[*content*]</article>
</div>
</div>
</section>
</main>
{{footer}}
Обратите внимание на [*parent*] в вызове меню:
это номер родительской страницы. Одна и та же строка шаблона
на странице этапа 2 выведет список страниц второго этапа,
а на странице этапа 4 — четвёртого. Меню считается от места,
а не задаётся руками.
Что берётся откуда
Полезно один раз выписать это таблицей и держать перед глазами: половина вопросов при переносе — это вопрос «а вот эта часть откуда должна взяться».
| Часть | Откуда берётся |
|---|---|
| Заголовок и текст | Поля карточки: [*pagetitle*], [*content*] |
| Пояснение под заголовком | Поле «Введение» — [*introtext*] |
| Хлебные крошки | Сниппет: строит путь от корня до текущей страницы |
| Боковое меню раздела | Сниппет от [*parent*] |
| Назад и вперёд | Сниппет соседних ресурсов того же уровня |
| Оглавление статьи | Ваш скрипт: собирает заголовки в браузере, движок не участвует |
Оглавление переносить не нужно
Оно собирается в браузере из заголовков статьи, а значит работает одинаково и в статической вёрстке, и в CMS. Просто проверьте, что файл скрипта подключён в чанке шапки — и всё.
Когда полей карточки не хватает
У мануала в шапке три строки условий: что получится, сколько времени, что нужно знать. Стандартных полей для такого нет — зато можно добавить свои. Они называются TV-поля, и создаются они в разделе «Элементы» парой щелчков.
Созданное поле выводится так же, как обычное:
[*vremya*]. Разница только в том, что имя
придумали вы, — и в том, что поле нужно разрешить тем
шаблонам, где оно используется, иначе в карточке страницы
его просто не будет видно. Подробнее — в разделе
про сниппеты
и TV-поля.
Две страницы-исключения
Контакты и страница 404 в общий шаблон не помещаются, но и своих шаблонов почти не требуют.
- Контакты. Это та же внутренняя страница, только вместо статьи стоит форма. Проще всего оставить общий шаблон, а форму положить в чанк и вставить его в содержимое страницы: движок разворачивает чанки и в тексте ресурса, не только в шаблоне.
- Ошибка 404. Ей нужен свой шаблон, потому что ни крошек, ни соседей у неё быть не может — неизвестно, откуда пришёл посетитель. Шаблон короткий: шапка, подвал и короткое сообщение со ссылками на разделы. Номер этой страницы указывается в настройках системы, иначе движок про неё не узнает.
Что обычно ломается
-
Страница пустая. Скорее всего, ошибка
в имени чанка: движок не находит
{{headr}}и выводит пустоту. Имена чанков чувствительны к регистру. - Стили не подключились. Путь остался относительным. В чанке он должен начинаться со слэша.
- Правка не появилась. Очистите кеш — движок отдаёт собранную ранее страницу.
- Меню выводит лишнее. В дереве есть страницы, которым в меню не место: например, 404. У ресурса для этого есть галочка «скрыть из меню».
Что просить у нейросети
Evolution CMS 3. Нужны хлебные крошки: путь от главной до текущей страницы, последний пункт — не ссылка, с микроразметкой BreadcrumbList.
Вот моя статическая разметка крошек, классы менять нельзя:
[вставьте разметку]
Предложи, каким сниппетом это сделать в Evolution 3, и дай вызов с параметрами плюс чанки под мою разметку. Если нужного сниппета в поставке нет — скажи прямо и предложи вариант на несколько строк кода.
Что должно получиться
- Один шаблон обслуживает все внутренние страницы
- Крошки, боковое меню и переходы к соседям считаются из дерева
- Новая страница добавляется выбором шаблона, без правки кода
- Особые строки шапки выведены через свои TV-поля