Все кейсы

CMS / Dynamic Routes / Frontend Renderer

Динамические страницы через Strapi CMS

В Murino и Point Toksovo редакторы управляют страницами через CMS. Я связывал типы контентных блоков с компонентами интерфейса и задавал правила для пустых полей.

Автор: Ярослав Мусатов Опубликовано: Обновлено:
НаправлениеCMS
Год2025
СрокПроектная задача
РольCMS Integration

Личная зона ответственности

Мой вклад

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

  • Спроектировал ограниченный набор управляемых CMS-блоков для динамических страниц.
  • Связал типы контента с frontend-компонентами и правилами отображения.
  • Определил fallback-поведение для неизвестных блоков и неполных данных.

Задача по динамическим страницам через CMS

В Murino и Point Toksovo редакторы должны были менять контент, порядок секций, изображения и SEO-поля через CMS. Для новых страниц не хотелось каждый раз создавать отдельный шаблон в коде.

Я использовал типы контента и компоненты Strapi, динамические маршруты и заранее заданный набор секций на frontend. Редактор выбирал блоки из этого набора.

Где возникает риск для интерфейса

Если дать CMS слишком много свободы, редактор может случайно разрушить интерфейс: оставить обязательный визуальный блок без данных, смешать несовместимые секции или создать страницу с неожиданным порядком контента. Если свободы слишком мало, каждое изменение снова становится задачей разработчика.

Как была устроена модель секций

У каждого типа секции были обязательные и необязательные поля, компонент интерфейса и правила для отсутствующих данных. Порядок блоков задавался в админке, а внешний вид оставался в коде сайта.

Динамический маршрут получал контент, SEO-поля и список секций. По типу секции выбирался Vue- или React-компонент. Для неизвестного типа и неполных данных предусматривалась отдельная обработка.

  • CMS управляет контентом и порядком секций
  • Frontend отвечает за отображение и безопасные fallback-сценарии
  • SEO-поля обрабатываются как часть модели страницы

Что нужно заранее зафиксировать

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

Редактор выбирает готовые секции; новый тип блока требует доработки CMS и интерфейса.

Что это дало контентным страницам

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

Правила для новых блоков

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

Проверяемые детали и ограничения

Материалы проекта

Динамическая контентная страница Point Toksovo, управляемая через CMS
Изображение из проекта.

Что можно проверить по материалу

  • На изображении показана страница проекта, контент которой управляется через CMS.
  • В кейсе перечислены элементы реализации: динамический маршрут, ограниченный набор блоков, mapping компонентов и SEO-поля.
  • Отдельно описано поведение при неизвестном типе блока и неполных данных.

Что осталось за рамками

Интерфейс редактора и внутренние модели CMS не публикуются. Показан итоговый экран, а правила рендеринга и fallback описаны без раскрытия закрытых данных проекта.

Стек

Nuxt
Next.js
TypeScript
Strapi
REST API

Проекты, где применялся этот опыт

Подробнее о проектах: задача, интерфейс и выполненная работа.

Связанные услуги

Если у вас похожая задача, посмотрите состав работ и порядок оценки.

Как уменьшить связанность между frontend и backend