У меня была похожая проблема с ckeditor, и мне удалось ее решить с помощью hook_js_alter (которая пока присутствует только в drupal7)
Использовать этот хук для этой проблемы не друпалвей, но все равно работает.
Может быть, этот подход может помочь вам достичь того же результата для других редакторов, таких как tinymce
Итак, в результате я изменяю настройки js, которые обычно загружаются через drupal_add_js ($ data, 'setting').Так что есть что-то вроде Drupal.settings.wysiwyg.configs.ckeditor.formatfull_html.contentsCss
, и я добавляю в него новый элемент.Это массив стилей CSS, который загружает ckeditor / wysiwyg, когда запускает редактор.Этот фрагмент кода относится к полному редактору html (formatfull_html), вам придется изменить его или изменить в соответствии с вашими потребностями.
function mymodule_js_alter(&$javascript) {
// Checking if we're editing a node.
if (arg(0) == 'node' && arg(2) == 'edit') {
$nid = arg(1);
// Loading a node to check it's type.
// we may be certain that it's loaded from cache.
$node = node_load((int) $nid);
if ($node->type == 'your-node-type') {
foreach ($javascript['settings']['data'] as &$row) {
// This will make changes to the proper js-settings record.
if (isset($row['wysiwyg']['configs']['ckeditor']['formatfull_html']['contentsCss'])) {
$row['wysiwyg']['configs']['ckeditor']['formatfull_html']['contentsCss'][] = url(drupal_get_path('module','mymodule') . '/wysiwyg-style.css');
}
}
}
}
}
Следует отметить, что стили выпадающих кнопок редактора зависят от этихстили тоже.
Редактировать: Мне только что удалось найти более «Drupalway» решение этой проблемы, но подход тот же.
function mymodule_element_info_alter(&$types) {
$types['text_format']['#pre_render'][] = 'mymodule_pre_render_text_format';
}
function mymodule_pre_render_text_format($element) {
if ($element['#entity_type'] == 'node' && $element['#bundle'] == "your-node-type" && $element['#type'] == 'textarea') {
$setting = array();
$setting['wysiwyg']['configs']['ckeditor']['formatfull_html']['contentsCss'][] = url( drupal_get_path('module','mymodule') . '/wysiwyg-style.css');
drupal_add_js($setting , 'setting');
}
return $element ;
}