Посты и редактор
Посты — основной тип контента на платформе. Публикуются в сообществах или на личной странице пользователя.
Создание поста
Кнопка создания поста доступна в шапке сайта и на странице сообщества. Пост открывается в блочном редакторе.
Блочный редактор (Editor.js)
Редактор построен на Editor.js и поддерживает:
| Тип блока | Назначение |
|---|---|
| Текст (параграф) | Основной текстовый контент |
| Заголовок | H2, H3, H4 |
| Изображение | Загрузка или вставка URL |
| Цитата | Выделение цитаты |
| Разделитель | Горизонтальный разделитель |
| Опрос / Quiz | Интерактивный опрос с вариантами ответа |
| Встраиваемый контент (Embed) | YouTube, Vimeo и другие |
| Код | Блок кода |
Заголовок и вводный текст
Каждый пост имеет:
- Заголовок — отображается крупно вверху поста
- Вводный текст (intro) — короткое описание для превью в ленте
- Тело (блоки) — основной контент в JSON-формате (хранится в поле
blocks)
Изображение обложки
Можно загрузить обложку поста — она отображается в карточке ленты.
Автосохранение черновика
Редактор автоматически сохраняет черновик. Пока is_publish = false, пост не виден другим пользователям. Вкладка браузера может закрыться — данные не потеряются.
История версий
Каждое сохранение фиксируется как версия. Список версий доступен через кнопку «История версий» в редакторе. Пользователь может восстановить любую из предыдущих версий.
Версии хранятся в таблице post_version_histories.
Параметры публикации
При публикации можно настроить:
| Параметр | Назначение |
|---|---|
| Сообщество | В какое сообщество публикуется пост |
| Теги | Привязка тегов (через #хештег в редакторе или отдельным полем) |
| Комментарии | Разрешить или запретить комментарии |
| 18+ | Пометить пост как контент для взрослых |
| Редакторская публикация | Добавить метку «от редакции» |
Опросы (Quiz)
Блок опроса позволяет добавить интерактивное голосование прямо в пост. Пользователи выбирают один из вариантов, результаты отображаются в реальном времени.
Голоса хранятся в отдельной таблице, связанной с постом.
Теги
Теги добавляются через #хештег прямо в редакторе (автодополнение) или через отдельное поле. Тег создаётся автоматически, если ещё не существует.
Страница тега: /tag/{slug} — лента всех постов с данным тегом.
Реакции на посты
Пользователи ставят реакции на посты через POST /reaction. Набор доступных реакций настраивается в Admin Panel → Реакции (/admin-panel/like-reactions).
Управление постами
Для автора
- Редактировать — изменить любой блок, заголовок, параметры
- Снять с публикации — установить
is_publish = false - Удалить — удалить пост (soft delete)
- Закрепить — закрепить пост в сообществе или на профиле
Для администратора
Admin Panel → Посты (/admin-panel/posts):
- Поиск и фильтрация постов
- Снятие с публикации
- Блокировка поста
- Удаление
Статусы поста
Состояние поста определяется булевыми полями is_publish и is_block:
| is_publish | is_block | Состояние |
|---|---|---|
false | false | Черновик, не виден другим |
true | false | Опубликован, виден всем |
true | true | Заблокирован администратором |
false | true | Заблокирован (снят с публикации) |
Ленты
Посты отображаются в нескольких лентах:
| Лента | URL | Описание |
|---|---|---|
| Персональная | /my | Посты из сообществ и авторов, на которых подписан (требует входа) |
| Популярные | /popular | По рейтингу и просмотрам (лента по умолчанию на /) |
| Новые | /new | Хронологически свежие посты |
| Редакторская | /editorial | Посты с пометкой «от редакции» |
| Новости | /news | Агрегированные новости |
| По тегу | /tag/{name} | Посты с конкретным тегом |
Просмотры и рейтинг
Просмотры постов трекаются в таблице post_showings. Рейтинг поста вычисляется на основе реакций, просмотров и комментариев. Настройка формулы — в Admin Panel → Рейтинг (/admin-panel/settings/rating).
Репосты
Пользователь может «репостнуть» чужой пост — он появится в его профиле со ссылкой на оригинал.
SEO поста
Для каждого поста автоматически генерируются:
<title>на основе заголовка- OpenGraph-мета с обложкой поста
- JSON-LD с разметкой
Article - Включение в
sitemap.xml