54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
|
|
# 12. Система статических страниц
|
|||
|
|
|
|||
|
|
## Назначение
|
|||
|
|
Система статических страниц управляет юридическими и информационными страницами (о компании, политика, доставка, возврат) через конфигурацию.
|
|||
|
|
|
|||
|
|
## Поведение системы
|
|||
|
|
- Список страниц и маршруты берутся из bootstrap/pages.
|
|||
|
|
- Контент может храниться как HTML/Markdown/структурированный JSON.
|
|||
|
|
- Frontend рендерит контент безопасно, с tenant-aware навигацией.
|
|||
|
|
|
|||
|
|
## Обязательные JSON-свойства
|
|||
|
|
- page.id
|
|||
|
|
- page.key
|
|||
|
|
- page.route.path
|
|||
|
|
- page.type = "static"
|
|||
|
|
- page.content.source
|
|||
|
|
|
|||
|
|
## Опциональные свойства
|
|||
|
|
- page.seoKey
|
|||
|
|
- page.visible
|
|||
|
|
- page.translations
|
|||
|
|
- page.lastUpdated
|
|||
|
|
|
|||
|
|
## Строгие правила
|
|||
|
|
- Запрещено хардкодить список статических страниц во frontend.
|
|||
|
|
- Контент должен быть изолирован по tenant.
|
|||
|
|
- HTML-контент должен проходить sanitation на frontend и/или backend.
|
|||
|
|
|
|||
|
|
## Пример JSON статической страницы
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": "page-privacy",
|
|||
|
|
"key": "privacy-policy",
|
|||
|
|
"type": "static",
|
|||
|
|
"route": { "path": "/privacy-policy", "exact": true },
|
|||
|
|
"content": {
|
|||
|
|
"source": "cms",
|
|||
|
|
"contentType": "html",
|
|||
|
|
"value": "<h1>Политика конфиденциальности</h1><p>...</p>"
|
|||
|
|
},
|
|||
|
|
"visible": true
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Ответственность Frontend
|
|||
|
|
- Рендерить статические страницы по конфигурации маршрутов.
|
|||
|
|
- Безопасно обрабатывать HTML-контент.
|
|||
|
|
- Поддерживать локализованные версии страницы.
|
|||
|
|
|
|||
|
|
## Ответственность Backend
|
|||
|
|
- Поставлять tenant-specific статический контент.
|
|||
|
|
- Поддерживать версионирование и аудит контента.
|
|||
|
|
- Гарантировать валидность route/content связки.
|