Снимаем обертки в модели CKE5

Продолжаю публиковать сниппеты, связанные с экосистемой CKEditor 5. Сегодня покажу как удалять контейнер с сохранением его содержимого.

Api предоставляет функцию writer.unwrap(element). Но беда в том, что функция не заботится о валидности дочерних элементов, когда те оказываются в родительском контейнере.

К примеру, у нас есть элемент mainContainer, в котором могут быть childElem1 и childElem2. Когда мы выполняем unwrap на mainContainer, childElem1 и childElem2 проваливаются ниже. Тут они могут быть даже валидными с т.з. модели, к примеру, если childElem1 транслируется в DOM как <span class=child1>. И span тег разрешен другим плагином.

А желательно бы и их найти и выполнить им unwrap, чтобы остался, к примеру, только текст, который был внутри дочерних контейнеров.

Организуем рекурсию:

Функция unwrap_content ожидает элемент, который нужно удалить, а также список имен других элементов, которые будут также подчищены.

В нашем случае нужно вызвать:

Написать комментарий

Мало букафф? Читайте есчо !

Вставка html entites в текстовые ноды

Апрель 5, 2025 г.

Делюсь еще одним лайфхаков, как в плагине CKE5 вставить htmlentity. При вставке текста в модель, CKEditor будет преобразовывать html символы вроде '&' и '>'. Но что делать, если нужно вставить символ в виде html кода? Рассмотрим следующий ...

Читать

Создание плагина CKEditor 5 в экосистеме Drupal 10

Февраль 8, 2024 г.

Drupal 10 добавил в ядро модуль wysiwyg CKEditor 5. Т.е. уже из "коробки" у вас есть редактор html кода. API CKEditor 4 и 5 версий значительно отличаются, ...

Читать

 

Комментарии к «Снимаем обертки в модели CKE5»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: