Інтеграція CKEditor 5 у CMS: налаштування, плагіни, адаптери

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Інтеграція CKEditor 5 у CMS: налаштування, плагіни, адаптери
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1359
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    957
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    947

Редактор контенту в адмінці гальмує, завантаження зображень падає з 403, а кастомні плагіни не працюють з React Server Components. Знайома ситуація? CKEditor 5 — модульне рішення з відкритим кодом, що підтримує TypeScript, колаборативне редагування та експорт у PDF/Word — вирішує ці проблеми, але потребує грамотної інтеграції. Ми займаємося цим понад 5 років і реалізували понад 50 проєктів — від типових корпоративних сайтів до high-load платформ. Наші інженери сертифіковані за CKEditor і готові виконати роботу під ключ з гарантією 12 місяців.

Як кастомізувати тулбар CKEditor 5?

Конфігурація тулбару задається в об'єкті toolbar.items. CKEditor 5 пропонує широкий набір вбудованих кнопок: заголовки, списки, медіа, таблиці. Ми допомагаємо вибрати потрібний набір і локалізувати інтерфейс. Приклад мінімального налаштування для української мови:

import { CKEditor } from '@ckeditor/ckeditor5-react';
import ClassicEditor from '@ckeditor/ckeditor5-build-classic';

function RichTextEditor({ value, onChange }) {
    return (
        <CKEditor
            editor={ClassicEditor}
            data={value}
            config={{
                language: 'uk',
                toolbar: {
                    items: [
                        'heading', '|',
                        'bold', 'italic', 'link', '|',
                        'bulletedList', 'numberedList', '|',
                        'blockQuote', 'insertTable', '|',
                        'uploadImage', 'mediaEmbed', '|',
                        'undo', 'redo', 'sourceEditing'
                    ]
                },
                image: {
                    upload: { types: ['jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'] }
                }
            }}
            onChange={(event, editor) => onChange(editor.getData())}
        />
    );
}

Чому CKEditor 5 кращий за альтернативи для вашої CMS?

CKEditor 5 виграє у TinyMCE за модульністю та продуктивністю — при однаковому наборі функцій він споживає в 2 рази менше пам'яті. Підтримка React Server Components дозволяє використовувати його в Next.js без серверного багу. Порівняння основних редакторів:

Характеристика CKEditor 5 TinyMCE Quill
Ліцензія GPL, комерційна MIT (потрібна підписка для преміум) BSD
TypeScript Повна підтримка Часткова Часткова
Кастомні плагіни Так, офіційний SDK Так (складніше) Так (через Parchment)
Колаборативне редагування Вбудоване Тільки преміум Ні
Headless-режим Так Ні Так

CKEditor 5 також пропонує кілька готових збірок — Classic, Inline, Balloon, Document — з різними наборами функцій. Це спрощує інтеграцію та знижує час на налаштування.

Збірка Особливості Застосування
Classic Традиційний тулбар зверху Корпоративні сайти, блоги
Inline Редагування по кліку Віджети, лендінги
Balloon Спливаюча панель інструментів Коментарі, мікроконтент
Document Сторінковий режим з колонтитулами Документообіг, договори

Згідно з офіційною документацією CKEditor 5, модульна архітектура дозволяє скоротити розмір бандла на 60% порівняно з монолітними редакторами.

Як встановити CKEditor 5 (модульна збірка)

Установка пакетів виконується через npm:

npm install @ckeditor/ckeditor5-react @ckeditor/ckeditor5-build-classic

Компонент готовий до використання. Для роботи з серверним завантаженням файлів знадобиться кастомний адаптер.

Кастомний адаптер завантаження зображень

class UploadAdapter {
    constructor(private loader: FileLoader) {}

    async upload() {
        const file = await this.loader.file;
        const formData = new FormData();
        formData.append('image', file);

        const response = await fetch('/api/media/upload', {
            method: 'POST',
            headers: { 'X-CSRF-TOKEN': getCsrfToken() },
            body: formData
        });

        const data = await response.json();
        return { default: data.url };
    }

    abort() {}
}

// Реєстрація адаптера
function UploadAdapterPlugin(editor) {
    editor.plugins.get('FileRepository').createUploadAdapter = (loader) =>
        new UploadAdapter(loader);
}

// У конфігурації
extraPlugins: [UploadAdapterPlugin]

Ми додаємо перевірку типів файлів, обмеження розміру (до 10 МБ) та генерацію мініатюр на стороні сервера. Гарантуємо безпечне завантаження з використанням CSRF-токенів.

Розробка кастомних плагінів

CKEditor 5 дозволяє створювати плагіни для блоків контенту. Приклад — плагін для вставки товару з пошуком та автозаповненням:

import { Plugin, ButtonView, Command } from 'ckeditor5';

class InsertProductCommand extends Command {
    execute({ productId, productName, productPrice }) {
        const editor = this.editor;
        editor.model.change(writer => {
            const productBlock = writer.createElement('productBlock', {
                productId, productName, productPrice
            });
            editor.model.insertContent(productBlock);
        });
    }
}

Такі плагіни інтегруються в тулбар і працюють як звичайні кнопки. На одному з проєктів ми реалізували подібне для каталогу з 10 000 товарів — час створення контенту скоротився на 40%. Економія на розробці власного редактора становить до 60% бюджету, а окупність інтеграції настає через 3–6 місяців за рахунок підвищення продуктивності редакторів. Замовте консультацію, щоб оцінити потенціал для вашого бізнесу.

Навіщо використовувати headless CKEditor (без UI)

Для сайтів на Next.js, де потрібна лише серіалізація/десеріалізація без WYSIWYG-інтерфейсу:

import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic';

// Парсинг HTML → модель → назад у HTML (для конвертації контенту)
const editor = await ClassicEditor.create(document.createElement('div'), { /* config */ });
 editor.setData(htmlContent);
const processed = editor.getData();
editor.destroy();

Цей підхід використовується при міграції контенту або server-side рендерингу.

Типові помилки при інтеграції

  • Ігнорування CSRF-захисту при завантаженні файлів — отримуємо 403. Вирішується кастомним адаптером з токеном.
  • Відсутність генерації мініатюр — важкі зображення сповільнюють завантаження сторінок. Ми додаємо автоматичне обрізання до 1200px по ширині.
  • Використання глобального стилю редактора без ізоляції — конфлікти з CSS фреймворку. Ми застосовуємо shadow DOM або scoped стилі.

Що входить в роботу з інтеграції

  1. Налаштування та локалізація тулбару.
  2. Інтеграція завантаження зображень і файлів з кастомним адаптером.
  3. Розробка кастомних плагінів (вставка товарів, відео, інтерактивних блоків).
  4. Підключення колаборативного редагування (опціонально).
  5. Експорт контенту в PDF/Word.
  6. Адаптація під мобільні пристрої.
  7. Тестування на кросбраузерність та продуктивність.
  8. Документація та навчання контент-менеджерів.

Процес роботи: аналіз поточної архітектури → налаштування стеку (React/Next.js) → розробка адаптера та плагінів → модульне та інтеграційне тестування → деплой та пост-релізна підтримка.

Термін інтеграції — від 3 до 7 робочих днів залежно від складності кастомних плагінів. На всі роботи надається гарантія 12 місяців. Отримайте консультацію з інтеграції CKEditor 5 у вашу CMS — ми підберемо оптимальне рішення.

Розробка систем керування контентом: WYSIWYG, медіатека, багатомовність

Ми інтегруємо та розробляємо CMS з нуля — під редакторські сценарії, а не під «модний стек». Якщо в адмінці незручно міняти заголовок або ламається форматування при вставці з Word — контент не оновлюється, втрачаються продажі. Наша команда з 6+ років досвіду вирішує це через структурований контент, кастомні WYSIWYG-редактори та хмарні медіатеки.

Коли headless CMS виправдана, а коли — ні

Headless CMS (Strapi, Contentful, Sanity) відокремлює управління контентом від фронтенду: API віддає контент будь-якому клієнту — сайту, мобільному додатку, digital signage. Вибір для омніканальних проєктів і коли фронтенд на React/Vue/Next.js. Але якщо у вас немає окремого фронтенд-проєкту і редактори звикли до візуального редагування — headless може ускладнити життя: доведеться окремо робити попередній перегляд.

Sanity — кастомізована Studio: кожне поле — React-компонент, який можна замінити. Portable Text (формат для rich content) портується в будь-який рендерер. Для складних редакторських workflow — найкращий вибір. Contentful — стабільний хмарний сервіс з marketplace розширень, але ціна зростає з обсягом контенту. Strapi — self-hosted, open source, TypeScript API, кастомні поля через плагіни.

Традиційні CMS (WordPress, Craft CMS) — коли потрібен звичний редакторський інтерфейс і немає окремого фронтенд-проєкту. Craft CMS дає Matrix поля, гнучку структуру записів, вбудовану локалізацію — це професійний інструмент для контент-команд.

Як ми будуємо WYSIWYG-редактор, який не ламає верстку

Редактор — окрема інженерна задача, не просто <textarea>. Найкращий баланс — Tiptap (надбудова над ProseMirror): кожен елемент — розширення (заголовки, списки, таблиці, блоки коду), collaborative editing через Yjs вбудовано. Lexical (від Meta) — продуктивніший, але складніший у налаштуванні. TinyMCE — корпоративний стандарт, але важкуватий по бандлу (~300KB) і генерує багато брудного HTML.

Головна проблема — вставка з Word. &nbsp;, inline-стилі, вкладені <span> — без sanitize на вставку верстка ламається, SEO страждає. Ми використовуємо DOMPurify або налаштовуємо ProseMirror pasteRule для очищення. Результат — чистий HTML, який не змінюється при редизайні.

Медіатека: від завантаження до CDN

Завантажувати файли через <input type="file"> на диск сервера — антипатерн. Диск переповниться, масштабування неможливо, CDN не підключити. Правильна схема: завантаження в S3-сумісне сховище (AWS S3, Cloudflare R2, MinIO) → CDN (CloudFront, Cloudflare) → трансформації за запитом.

Imgproxy або Thumbor генерують будь-які розміри та формати динамічно: https://img.example.com/resize:800:600/format:webp/plain/s3://bucket/photo.jpg. Оригінал зберігається один раз, похідні не займають місце. Cloudflare Images — managed-сервіс.

Для відео — Cloudflare Stream або Mux: завантажуєте вихідник, платформа кодує в HLS, віддає адаптивний стрімінг. Без цього відео важить 500MB і завантажується цілком.

Що входить в розробку медіатеки

Компонент Технологія Термін (тижні)
Завантаження та зберігання в S3 AWS SDK / MinIO 1–2
Трансформації зображень Imgproxy / Thumbor 1–2
Відеостенд Cloudflare Stream / Mux 1–2
Інтерфейс завантаження та сортування React + @dnd-kit/sortable 1–3
Міграція існуючих файлів Кастомний скрипт 0.5–1

Структурований контент vs free-form HTML

Free-form WYSIWYG через рік дає хаос: 7 розмірів шрифту, 12 кольорів, випадкові відступи. Редизайн без ручного чищення неможливий. Структурований контент — замість «як воно виглядає» зберігаємо «що це є». Не <p style="font-size:24px; color:red">Важно!</p>, а тип блоку callout з параметром variant: warning. CMS зберігає структуру, фронтенд вирішує, як рендерити. Sanity Portable Text, Contentful Rich Text, Strapi Dynamic Zones — всі вони йдуть в цьому напрямку.

Чи варто впроваджувати структурований контент?

Процес роботи

  1. Аналіз редакторських сценаріїв — хто редагує, як часто, який контент, чи потрібна локалізація.
  2. Вибір CMS під сценарії, а не по трендах.
  3. Проектування контент-моделі — типи записів, поля, зв'язки.
  4. Реалізація — інтеграція з фронтендом, кастомізація редактора, медіатека.
  5. Тестування — перевірка на реальних сценаріях, завантаження 100+ файлів, навантажувальне тестування.
  6. Деплой та документація — інструкція для редакторів, опис API, доступи.

Строки та бюджет

Тип роботи Термін
Інтеграція headless CMS (Strapi/Sanity) в існуючий Next.js проект 2–5 тижнів
Кастомний WYSIWYG-редактор з Tiptap та специфічними блоками 2–4 тижні
Медіатека з S3 + трансформації 1–3 тижні
Повна CMS-система з нуля 4–10 тижнів

Бюджет розраховується індивідуально після аудиту. Зв'яжіться з нами — оцінимо ваш проєкт за один день.

Що ви отримаєте після завершення

  • Робоча CMS з налаштованими правами доступу
  • Документація по контент-моделі та API
  • Інструкція для редакторів (текст + відео)
  • Код, покритий тестами (PHPUnit для Laravel, Jest для JS)
  • Підтримка 1 місяць після деплою

Наш досвід

6 років на ринку, 40+ виконаних проєктів. Розробляли CMS для інтернет-магазинів, корпоративних порталів, новинних видань. Використовуємо ліцензійне ПЗ (sentry.io, sonarcloud) — гарантуємо якість коду.

Джерело: внутрішня статистика проєктів за 2018–2024 рр.

Детальніше про WYSIWYG-редактори читайте на Wikipedia.

Залишилися питання?

Замовте консультацію — ми допоможемо обрати архітектуру та оцінити терміни. Отримайте пропозицію протягом 2 робочих днів.