Редактор Editorjs

InstantCMS 2.X
#1 30 сентября 2024 в 21:23

Приглашаю протестировать и обсудить поле Editorjs. Поле аналогично полю HTML, является дочерним от него, умеет все то же самое, только в нем принудительно используется только один редактор Editorjs. Официальный сайт редактора editorjs.io 

Изображение
Изображение
Изображение

ВНИМАНИЕ! Использовать только в новых типах контента. Используемая с полем библиотека преобразования блоков в верстку не умеет преобразовывать произвольный html код в блоки. Поэтому, если вы смените тип поля с html на editorjs с уже имеющимся контентом, при редактировании в редакторе вы увидите пустой экран.
По этой же причине редактор поставляется отдельным полем, а не редактором. Так как редакторы движка не могут повлиять на вывод поля при просмотре. А блоки Editorjs надо сперва обработать, «превратив» в верстку, которую потом можно отдать типографу на очистку.

В данный момент доступны только 5 типа блоков: встроенные параграфы, заголовок, изображение, список и разделитель. Поддерживается вставка объектов (ютуб, вимео, картинки и др.) через ссылку. 

Тестировалось на 2.16.2
Будет ли работать на более старой версии или default шаблоне не знаю.
Вы всегда сможете в дальнейшем отказаться от использования этого поля, сменив его на html. Все тексты сохранятся.

Сообщения о найденных недочетах и багах приветствуются. Предложения по развитию обсуждаются только при условии финансирования...

Поле не появилось бы без финансовой поддержки от CEH9I

Прикрепленный файл
editorjs20240927-1-1-2.zip 159 Кб
#2 30 сентября 2024 в 21:33

очень крутой редактор. помню, я когда-то кого-то мучил чтоб его адаптировать под инсту )

спасибо!

#3 1 октября 2024 в 00:22

Я правильно понял. что из уже имеющегося поля html в этот формат не преобразуется. Но если поставить этот редактор у поля, а потом перейти на другой редактор, то все будет ОК?

Добавлено спустя 1 минуту

Предложения по развитию обсуждаются только при условии финансирования...

Zau4man

а что еще можно в него встроить, так как доп финансирование можно рассмотреть, если конечно редактор имеет возможность обрабатывать большее количество типов сущностей, чем перечисленные 5:)

#4 1 октября 2024 в 03:35

Вот это подарок. Спасибо.

Надо будет перевести на Инглаш. 

Да, а зачем там «Поиск»?

Так, идейку подкину, смена цвета текста.

Еще подсказки за текстом. Еще «Quote» нужен

Изображение

#5 1 октября 2024 в 06:40

 Def, именно так и написано в моем сообщении

если вы смените тип поля с html на editorjs с уже имеющимся контентом, при редактировании в редакторе вы увидите пустой экран

Zau4man

и

Вы всегда сможете в дальнейшем отказаться от использования этого поля, сменив его на html. Все тексты сохранятся

Zau4man
#6 1 октября 2024 в 09:48

У себя прописал такие стили 

.editorjs{
    max-width: 99%;
    padding: 20px;
}

.ce-block__content {
    max-width: 99%;
}

.ce-toolbar__content {
    max-width: 99%;
    margin: 0 auto;
    position: relative;
}

@media(min-width: 650px){
    .editorjs{
        padding-left: 60px;
    }
}

так как иначе редактор показывался узким в отличие от стандартного контейнера.

Вставка таблиц наверное тоже актуальна помимо таких опций.

Если надо реализовать доплату, то напишите, уверен многие и не только я поддержат.

Изображение

Добавлено спустя 1 час

Юзабильно было бы рядом с кнопкой на русском писать аналогичную надпись, так как иначе обычный юзер не понимает когда можно начинать вводить текст.

Изображение

#7 1 октября 2024 в 22:05

Юзабильно было бы рядом с кнопкой на русском писать аналогичную надпись, так как иначе обычный юзер не понимает когда можно начинать вводить текст.

  1. .ce-block:only-of-type .ce-paragraph[data-placeholder-active]:empty::before, .ce-block:only-of-type .ce-paragraph[data-placeholder-active][data-empty="true"]::before {
  2. content: "Полковнику никто не пишет и ссылки не шлет";
  3. }

Не знаю зачем тап паддинг аж 300. Сделал так, но можно вообще 0

  1. .codex-editor__redactor {
  2. padding-bottom: 10px !important;
  3. }

Подсказки перед текстом сделал так:

  1. .ct--shown {
  2. z-index: 9999;
  3. }

И еще очень большой недостаток. Не воспроизводятся видео МП4. Надо посмотреть есть ли в интернете решения.

Поставил себе «Quote». Выглядит в редакторе поправимо стилями.

Изображение

Но при отправке выдаёт за место Цитаты  — <hr>

delimiter — тоже выдает как <hr>

#8 3 октября 2024 в 00:54

Забыл, «цитата» работает как надо, я там с буквой ошибся. Пардон. Прикрепил точно такой же, только с цитатой. 

Прикрепленный файл
editorjs.zip 172 Кб
#9 3 октября 2024 в 09:09

Забыл, «цитата» работает как надо, я там с буквой ошибся. Пардон. Прикрепил точно такой же, только с цитатой. 

pupsik

Спасибо, сейчас протестирую. А все возможные плагины в редактор можно встроить?)

Добавлено спустя 39 минут

Забыл, «цитата» работает как надо, я там с буквой ошибся. Пардон. Прикрепил точно такой же, только с цитатой. 

pupsik

Странно, в настройках поля цитату включил, а на фронте не появилось

Изображение

#10 3 октября 2024 в 12:12

Здравствуйте.

Новый сайт, типы контентов уже созданы, но контента на сайте нет ещё. 

ВНИМАНИЕ! Использовать только в новых типах контента

Zau4man

Что будет, если использовать в уже созданных типах контента? Работать не будет?

#11 3 октября 2024 в 12:46

но контента на сайте нет ещё.

F_a_R_i_D

Работать не будет?

F_a_R_i_D

Будет работать.

Ключевое тут нет контента. Проблема не в старом контенте. А в том, что при попытке отредактировать старую статью, созданную, допустим, в Tiny, вы ничего не увидите, список блоков будет пустой, и при сохранении потеряете содержимое статьи. Если старые записи редактировать не будете, можете использовать поле и при наличии контента

Ну и вы всегда можете в дальнейшем переключиться с типа поля Editorjs (если поле по каким-то причинам не понравится) на тип поля html с тем же Tiny, и продолжить наполнять сайт. Это поле хранит данные точно также (добавляя специальные классы, чтобы можно было преобразовать верстку в блоки обратно), как и обычное поле с редактором.

Надеюсь подробно объяснил.

#12 3 октября 2024 в 12:50

Если старые записи редактировать не будете, можете использовать поле и при наличии контента

Zau4man

В принципе я так и понял, просто хотел уточнить. Благодарю за чёткий ответ и проделанную работу.

#13 3 октября 2024 в 12:56

Больше скажу. Вполне себе реально написать альтернативу используемому в поле парсеру блоки->html->блоки github.com/Edd-G/editorjs-simple-html-parser 

И убрать из него требование к наличию специальных классов, а все непонятные блоки пропускать. И тогда поле сможет «переваривать» любую верстку. Но это вышло за рамки хотелок заказчика. И непонятно, насколько универсально такой мигратор бы получился.

#14 3 октября 2024 в 16:24

Def Извеняюсь. Там надо в system/fields/editorjs.php строка 272 напишите «Quote» с маленькой буквы «quote». Делал поздно, да и вообще делал другие плагины а цитату использовал как «Тест». Я этот editorjs впервые внутри вижу. 

А все возможные плагины в редактор можно встроить?)

 Вы напишите какой вам нужен, я попробую.

Я искал способ воспроизведения mp4 через ссылку, нашел какой то, но не получилось его пристроить. «VideoPlayer not defined» А без mp4 к сожалению эдитор мне не подходит.

Никогда еще Штирлиц не был так близок к провалу.

Изображение

Но, блин нету парсера Видео. 

Прокрепил файл. Может кто закончит, я не знаю как парсеры делать. Брал копию с embed, не сработало. Так то все воспроизводится, и если добавить блок в /system/libs/Durlecode/EJSParser/Parser.php

  1. private function parseVideo($block)
  2.  
  3.  
  4. {
  5. $figure = $this->dom->createElement('figure');
  6.  
  7. $attrs = [];
  8.  
  9. $caption = (!empty($block->data->caption)) ? $block->data->caption : '';
  10.  
  11. if ($block->data->withBorder) $attrs[] = "withborder";
  12. if ($block->data->withBackground) $attrs[] = "withbackground";
  13. if ($block->data->stretched) $attrs[] = "stretched";
  14.  
  15. $style = (count($attrs) > 0) ? implode(' ', $attrs) : false;
  16.  
  17. $class = $this->addClass($block->type, false, $style);
  18.  
  19. $figure->setAttribute('class', $class);
  20.  
  21. $video = $this->dom->createElement('video');
  22.  
  23. $video->setAttribute('src', $block->data->url);
  24. $video->setAttribute('alt', $caption);
  25.  
  26. $figure->appendChild($video);
  27.  
  28. if (!empty($caption)) {
  29. $figCaption = $this->dom->createElement('figcaption');
  30. $figCaption->appendChild($this->html5->loadHTMLFragment($caption));
  31. $figure->appendChild($figCaption);
  32. }
  33.  
  34. $this->dom->appendChild($figure);
  35. }

отправляетса без ожибок. Но блок не выведет.

Прикрепленный файл
editorjs-config.zip 5 Кб
#15 3 октября 2024 в 21:38

Тут, цитата и код.

Прикрепленный файл
editorjs.zip 174 Кб
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.