Skip to content

Посты и редактор

Посты — основной тип контента на платформе. Публикуются в сообществах или на личной странице пользователя.

Создание поста

Кнопка создания поста доступна в шапке сайта и на странице сообщества. Пост открывается в блочном редакторе.

Блочный редактор (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_publishis_blockСостояние
falsefalseЧерновик, не виден другим
truefalseОпубликован, виден всем
truetrueЗаблокирован администратором
falsetrueЗаблокирован (снят с публикации)

Ленты

Посты отображаются в нескольких лентах:

ЛентаURLОписание
Персональная/myПосты из сообществ и авторов, на которых подписан (требует входа)
Популярные/popularПо рейтингу и просмотрам (лента по умолчанию на /)
Новые/newХронологически свежие посты
Редакторская/editorialПосты с пометкой «от редакции»
Новости/newsАгрегированные новости
По тегу/tag/{name}Посты с конкретным тегом

Просмотры и рейтинг

Просмотры постов трекаются в таблице post_showings. Рейтинг поста вычисляется на основе реакций, просмотров и комментариев. Настройка формулы — в Admin Panel → Рейтинг (/admin-panel/settings/rating).

Репосты

Пользователь может «репостнуть» чужой пост — он появится в его профиле со ссылкой на оригинал.

SEO поста

Для каждого поста автоматически генерируются:

  • <title> на основе заголовка
  • OpenGraph-мета с обложкой поста
  • JSON-LD с разметкой Article
  • Включение в sitemap.xml

Released under the MIT License.