
mxEditorJs
Блочный редактор Editor.js для MODX 3 — контент блоками вместо TinyMCE/CKEditor


Схемы сохранения и загрузки контента. Руководство для редакторов: user-guide.
mxEditorJs использует Canonical JSON + HTML snapshot:
modResource.content или textarea TVOnDocFormPrerender подключает CSS/JS и заполняет window.mxEditorJsConfigMODx.loadRTE инициализирует Editor.js на #content и на textarea.modx-richtext (TV)content/get читает JSON из sidecarcontent/migrate, dry_run)syncToTextarea, debounce 500 ms): renderPreviewHtml)mxeditorjs_json / mxeditorjs_tv_{id}_jsonhookBeforeSubmit сбрасывает актуальный JSON в hidden fieldsOnBeforeDocFormSave → ContentRepository / TvContentRepository.save(JSON)content_versionПри этом пути серверный HtmlRenderer не вызывается. HTML в textarea формирует клиент.
POST content/save + content_json:
ContentValidatorHtmlRenderer → HTMLmodResource.contentИспользуйте для AJAX или кастомных интеграций. TV через connector не обновляют modResource.content.
content/migrate?dry_run=1 — preview блоковHtmlMigrator.convert() → save sidecar + обновление HTMLforce, confirmed — перезапись существующего sidecarПоддерживаются: p, h1–h6, ul/ol, blockquote, img, table, pre/code, hr. Не мигрируются: embed, gallery, attaches, checklist.
| Действие | Connector | Настройки |
|---|---|---|
| Загрузка изображения / галереи | media/upload | image_mediasource, image_upload_path |
| Загрузка вложения | media/uploadFile | file_mediasource, file_upload_path |
| Обзор папок | media/browse | type=image или type=file |
OnResourceDelete удаляет записи в mxeditorjs_content и связанные строки mxeditorjs_tv_content.
| Событие | Назначение |
|---|---|
OnRichTextEditorRegister | Регистрация mxEditorJs в списке RTE |
OnDocFormPrerender | Конфиг, ассеты, инициализация |
OnBeforeDocFormSave | Сохранение JSON в sidecar |
OnResourceDelete | Очистка sidecar |