Вступ 2026 →
Факультет
Вступнику
Здобувачу
Викладачу

Робота та розвиток

Кабінет викладачаПідвищення кваліфікаціїАкадемічна доброчесність

Облік та ресурси

Військовий облікКорисні ресурси
Наука

Підготовка кадрів

АспірантураДокторантура

Публікації та заходи

Наукові журналиНаукові заходи

Проєкти та спільноти

ПроєктиСтудентські гуртки
МіжнароднаНовиниКонтактиВступ 2026 →
Новини

Картинки прямо в тексті новини — без WYSIWYG-редактора

У формі створення й редагування новини (/admin/) з’явилась кнопка «🖼 Вставити зображення» — тепер картинку можна додати не лише як обкладинку, а й будь-де всередині самого тексту новини.

Як це працює

  1. Редактор ставить курсор у потрібне місце тексту й натискає кнопку.
  2. Обирає файл (jpeg, png, webp або gif, до 5 МБ).
  3. Файл заливається на новий ендпоінт POST /api/news/upload, який комітить його в GitHub через Contents API — так само, як обкладинка чи сама новина.
  4. У відповідь Function повертає публічний шлях, і скрипт сам вставляє ![](шлях) рівно в позицію курсора.

Жодного окремого сховища картинок чи CDN — усе одразу лягає в public/news/inline-<мітка часу>-<слаг файла>.<розширення> у самому репозиторії, версіюється разом із кодом і збирається Astro як звичайний статичний файл.

Чому не повноцінний WYSIWYG-редактор

Найпростіший спосіб дати редактору «вставити картинку де завгодно» — поставити в адмінку rich-text редактор (щось на кшталт TipTap чи Quill). Свідомо цього не робили:

  • Джерело правди лишається markdown. .md-файл у Git читається й диффиться людиною напряму, без прошарку HTML-серіалізації в обидва боки.
  • Нуль нових залежностей. Кнопка — це ~30 рядків клієнтського JavaScript поверх звичайної <textarea>, а не бібліотека редактора з власним станом, плагінами й CSS.
  • Той самий контракт, що й раніше. Схема новини в content/config.ts і так вимагає markdown у полі тіла — WYSIWYG означав би або конвертувати його вихідний HTML назад у markdown (крихко), або міняти саму схему.

Мінімальний інструмент під конкретну потребу — послідовно з рештою адмінки: вона й так уже свідомо без бази даних, без окремого бекенду, без CMS-фреймворка.

Приклад

Ось так виглядає картинка, вставлена прямо в текст цим самим способом:

Приклад промо-банера, вставленого через кнопку “Вставити зображення”

← Усі новини