Добавляем настройки к js плагину CKEditor 5 в Drupal

Когда вы настраиваете форматы текстов, то кроме добавления иконок в toolbar wysiwyg, вы можете видеть набор настроек для разных плагинов CKEditor. Посмотрим как добавить настройки для своего плагина.

Сложно рассматривать эту задачу чисто теоретически, потому расскажу на примере плагина c5bb.

Плагин позволяет настраивать anchor ссылки, добавляя к ним класс .btn и ряд других классов, которые позволяют в конце концов настроить bootstrap-like button.

Помимо классов относящихся к фреймворку bootstrap, у ссылки есть и собственные естественные атрибуты типа href, target.

В определенный момент я понял, что было бы удобно иметь гибкую настройку bootstrap классов, что сводится к конфигурированию нескольких выпадающих списков.

На скриншоте это три выпадающих списка — Size (btn-sm, btn-lg), Style (btn-primary, btn-secondary) и Color (light, dark).

В общем хотелось бы иметь настройку, позволяющую создавать выпадающие списки, которые настраиваются через admin интерфейс сайта.

Создание плагина конфигурации

Плагин конфигурации — то есть описание элементов формы — задаётся как расширение класса CKEditor5PluginDefault. Его нужно разместить в /src/Plugin/CKEditor5Plugin/.

Для моего случая я написал C5BB класс (файл из модуля c5bb v 1.0.5) C5BB.php:

В buildConfigurationForm нужно, используя Form API, объявить требуемые поля. Текущие значения берутся из актуальной конфигурации — $this->configuration.

Как и для обычной формы, вы можете реализовать валидацию и отправку данных — через реализацию методов validateConfigurationForm и submitConfigurationForm интерфейса PluginFormInterface.

В моём случае это просто запись данных формы в конфигурацию:

Частью валидации также является функция getElementsSubset, которая должна передать набор описаний тегов, с которыми работает ваш плагин. Логика описания такая же как при задании секции elements файла *.ckeditor5.yml.

Конфигурация будет передана в ваш js плагин в том виде, как вы это сделаете в методе getDynamicPluginConfig. Обычно это просто передача массива конфигурации:

Создание схемы конфигурации

Кроме формы, вам нужно объявить схему данных вашей конфигурации, т.к. вообще она может не соответствовать структуре данных в вашей форме.

Задаётся она в виде описания схемы в /config/schema

Файл c5bb.schema.yml (c5bb модуль м 1.0.5):

У меня схема полностью соответствует форме — т.е. я описал те же два поля — текст и чекбокс.

Обратите внимание на то, как формируется название секции: c5bb_bbutton. Первая часть — название модуля, вторая — название js плагина.

Добавление ссылки на класс в *.ckeditor5.yml.

Созданный ранее класс C5BB нужно «зарегистрировать» в описателе ckeditor5 плагина. Он указывается как свойство «class» в секции drupal.

Файл c5bb.ckedtior5.yml (c5bb модуль м 1.0.5):

Получение данных конфигурации на стороне js плагина

После всех настроек, нужно как то получить передаваемые данные уже в экосистеме CKEditor5 API.

Они становятся частью общей конфигурации редактора, а так как ваш плагин расширяет класс Plugin, то внутри плагина получить настройки можно так:

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

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

Подключение своих стилей для CKEditor 5 в Drupal

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

Чтобы добавить в редактор свои стили, обычно следуют гайду, который реализует hook mymodule_library_info_alter. При создании своих модулей для CKE5/D10, я так же пользовался данной статьей из документации. Но проблема была в том, что тот модуль, ...

Читать

Wysiwyg для Drupal 7

Июнь 8, 2011 г.

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

Читать

 

Комментарии к «Добавляем настройки к js плагину CKEditor 5 в Drupal»

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



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