nuckty
EN
Все разделы →

Карта сайта вместо неявных маршрутов

Решение

Описывать страницы в одном файле config/sitemap.yml. Каждая запись задаёт заголовок, URL, исходный файл и необязательные метаданные, например layout.

Контекст

Для сайта документации важны заданный порядок страниц, структура адресов и навигация. Каталог контента может содержать черновики и ассеты, которые не должны автоматически становиться страницами.

Альтернативы

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

Метаданные в каждом файле. URL и сведения о вёрстке можно хранить рядом с документом. Так локальные настройки остаются рядом с контентом, но общую структуру сайта сложнее проверить в одном месте.

Явное дерево страниц. Оно добавляет шаг регистрации, зато отделяет опубликованные адреса от расположения исходников Markdown.

Аргумент

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

Движок готовит хлебные крошки по сегментам URL и карты соответствия файлов Markdown адресам для междокументных ссылок. Один исходный файл может иметь несколько адресов; мост выбирает подходящего кандидата или сообщает о неоднозначности.

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

Последствия

Добавление файла Markdown само по себе не публикует страницу: нужна запись в карте сайта. Список публикации становится явным, но содержимое зарегистрированных страниц всё равно требует проверки.

По мере роста сайта карту нужно редактировать и поддерживать. Для автоматически создаваемых или динамических маршрутов может лучше подойти другая модель.