Последнее понятие этапа — и единственное, которое придётся обдумать заранее. Шаблон можно переписать за вечер, чанк переименовать за минуту. Дерево страниц перестраивать больно: вместе с ним меняются все адреса сайта.

Страница, документ, ресурс

В админке Evolution то, что посетитель видит как страницу, называется ресурсом (иногда — документом). Три слова про одно и то же: ресурс — это запись в базе данных, у которой есть заголовок, текст, выбранный шаблон и место в дереве.

Дерево видно слева в админке и устроено точно как папки на компьютере: у каждого ресурса есть родитель, а у родителя могут быть дети. Верхний уровень — главная страница, она же корень.

Дерево этого сайта в админке
Главная
├── Этапы
│   ├── 1. Зачем этот проект
│   ├── 2. Выбор инструментов
│   │   ├── Что такое CMS
│   │   ├── Шаблоны
│   │   ├── Чанки
│   │   ├── Сниппеты и TV-поля
│   │   └── Структура ресурсов
│   ├── 3. Дизайн шаблонов
│   ├── 4. Установка CMS
│   ├── 5. Натягивание вёрстки
│   └── 6. Хостинг и публикация
├── Мануалы
│   ├── Мегаменю
│   └── ... ещё одиннадцать
├── Теория
│   └── ... пятнадцать страниц
└── Контакты

Страница, которую вы читаете, — пятый ребёнок ресурса «Выбор инструментов», который сам ребёнок «Этапов». Эта вложенность не украшение админки: из неё движок получает три вещи сразу.

Из дерева получается адрес

У каждого ресурса есть псевдоним (alias) — короткое слово латиницей, которым он называется в адресной строке. Полный адрес собирается из псевдонимов всех родителей по цепочке:

Как складывается адрес
Этапы                 alias: etapy
  Выбор инструментов  alias: vybor-instrumentov
    Структура ресурсов  alias: struktura-resursov

Адрес: /etapy/vybor-instrumentov/struktura-resursov/

Такие адреса называют ЧПУ — человекопонятные УРЛы. Без них Evolution отдавала бы страницу по номеру: index.php?id=27. Работает и так, но по адресу невозможно понять, куда он ведёт, а поисковики ЧПУ любят. Включается это одной настройкой в админке, на четвёртом этапе дойдём.

Псевдоним лучше не менять потом

Адрес страницы уже мог разойтись по закладкам, мессенджерам и поисковой выдаче. Меняете псевдоним — все старые ссылки ведут в никуда. Если менять всё-таки пришлось, со старого адреса ставят переадресацию на новый. Проще один раз подумать над именем.

Правила для псевдонима те же, что для имени файла: только латиница в нижнем регистре, цифры и дефисы. Русские буквы Evolution переведёт в транслит сама, но лучше писать сразу руками — автоматический перевод иногда даёт неожиданное.

Из дерева получается меню

Помните вызов DocLister с прошлой страницы? Он не знает ни одной ссылки заранее — он читает дерево. Боковое меню слева от этого текста в CMS превратится в одну строку:

Меню страниц текущего раздела
[[DocLister? &parents=`[*parent*]` &tpl=`sideItem`]]

[*parent*] — это номер родителя текущей страницы. То есть: «выведи всех детей моего родителя чанком sideItem». Добавили в админке шестую страницу этапа — она появилась в боковом меню всех пяти соседей. Ничего не правя руками.

Порядок пунктов задаётся полем menuindex: чем меньше число, тем выше пункт. В дереве страницы можно просто перетаскивать мышью, а menuindex движок пересчитает сам.

Из дерева получаются крошки

Путь наверху страницы — «Главная / Этапы / Выбор инструментов / Структура ресурсов» — это тоже дерево, только прочитанное снизу вверх. Сниппет берёт текущий ресурс, поднимается к родителю, к родителю родителя и так до корня.

Значит, крошки не нужно прописывать руками ни на одной странице сайта. Как это устроено изнутри и что за микроразметку к ним добавляют, разбирается в мануале про хлебные крошки.

Поля ресурса, которые управляют деревом

Что задаётся у каждой страницы в админке
Поле Что задаёт На что влияет
parent Родитель — где страница лежит в дереве Адрес, меню, крошки
alias Псевдоним для адреса Адрес страницы
menuindex Порядковый номер среди соседей Порядок пунктов в меню
menutitle Короткое название для меню Текст пункта, если заголовок длинный
hidemenu Прятать ли страницу из меню Страница есть, в меню её нет
published Опубликована или черновик Видит ли страницу посетитель
isfolder Контейнер: у страницы есть дети Значок папки в дереве

Контейнер — обычная страница

Evolution ставит значок папки любому ресурсу, у которого появились дети. Это не особый тип: «Этапы» — полноценная страница со своим текстом и шаблоном, просто внутри неё лежат ещё шесть. Разделу можно и не давать содержимого, но лучше дать: пустая страница по адресу /etapy/ выглядит как ошибка сайта.

Как дерево выглядит в админке

Как продумать дерево заранее

Выпишите все страницы будущего сайта списком — хоть в блокноте, хоть на бумаге. Потом сгруппируйте и проверьте по трём вопросам:

  1. Читается ли адрес вслух? /etapy/hosting/ — понятно. /p/2/14/ — нет.
  2. Не глубже трёх уровней? Четвёртый уровень означает адрес в пять слов и крошки, которые не помещаются на телефоне.
  3. Понятно ли, куда класть новую страницу? Если для очередного материала подходят сразу два раздела, деление выбрано неудачно.

У этого сайта дерево описано в спецификации целиком, до единой страницы, ещё до первой строчки кода. Именно поэтому его удалось сначала свёрстать папками на диске — структура папок повторяет будущее дерево ресурсов один в один.

Папки на диске = ресурсы в CMS

Верстая статику, складывайте каждую страницу в свою папку с файлом index.html: путь etapy/hosting/index.html открывается по адресу /etapy/hosting/ — ровно так же, как будет в CMS. При переезде ни один адрес не изменится, и ни одна ссылка не сломается.

Что теперь понятно

  • Ресурс — это страница: запись в базе с заголовком, текстом, шаблоном и местом в дереве
  • Адрес складывается из псевдонимов всех родителей по цепочке
  • Меню и хлебные крошки строятся по дереву, руками их не пишут
  • Дерево продумывают до первой страницы: менять адреса потом дорого

Этап пройден

Четыре слова, которые пугали в начале, — шаблон, чанк, сниппет, TV-поле — теперь означают понятные вещи, и к ним добавилось пятое: ресурс. Этого словаря хватит до конца проекта. Дальше — дизайн: какие бывают типы страниц и как объяснить нейросети, что вы хотите увидеть.