Чтобы добавить в редактор свои стили, обычно следуют гайду, который реализует hook mymodule_library_info_alter.
При создании своих модулей для CKE5/D10, я так же пользовался данной статьей из документации. Но проблема была в том, что тот модуль, который последний выполняет вставку своих стилей, перекрывает определения остальных модулей.
При этом я менял код так, чтобы именно добавлять свои файлы в библиотеку (а не определять библиотеку internal.drupal.ckeditor5.stylesheets). Но беда в том, что массив
1 |
$libraries['internal.drupal.ckeditor5.stylesheets']['css']['theme'] |
приходит пустым при вызове зацепки в следующем по цепочке модуле, как будто стили на предыдущем шаге не были добавлены.
Поэтому я реализовал добавление стилей через hook_alter_css.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
use Drupal\Core\Asset\AttachedAssetsInterface; use Drupal\Core\Language\LanguageInterface; /** * Implements hook_css_alter(). */ function MODULENAME_css_alter(&$css, AttachedAssetsInterface $assets, LanguageInterface $language) { if (isset($css['core/modules/ckeditor5/css/editor.css'])) { $module = 'MODULENAME'; $module_path = \Drupal::service('extension.list.module')->getPath($module); $info = \Drupal::service('extension.list.module')->getExtensionInfo($module); if (isset($info['ckeditor5-stylesheets']) && $info['ckeditor5-stylesheets'] !== FALSE) { $cssCKE5 = $info['ckeditor5-stylesheets']; foreach ($cssCKE5 as $url) { $cssUri = $module_path . '/' . $url; $css[$cssUri] = [ 'type' => 'file', 'data' => $cssUri, 'version' => -1, 'media' => 'all', 'preprocess' => TRUE, ]; } } } } |
Т.е. идея та же самая что и в гайде — добавить файлы стилей, указанные modulename.info.yml. Делается это только в том случае, если в списке стилей присутствует стандартный для ckeditor5 файл стилей — core/modules/ckeditor5/css/editor.css.
В инфо файл (.info.yml) вашего модуля добавьте секцию со стилями для CKE5:
1 2 3 4 |
ckeditor5-stylesheets: - css/mystyles.css - css/mystyles2.css |