私はこの問題のために、このフックを使用するdrupalwayはないが、それはとにかく働く
(今のdrupal7にのみ存在している)CKEditorバージョンと同様の問題があったとhook_js_alterを使用してそれを解決するために管理。
たぶん、このアプローチは、結果として、私は通常drupal_add_js($データ、「設定」)を介してロードされているJSの設定を変更しています、あなたはTinyMCEはそう
のような他のエディタで同じ結果を達成するのを助けることができます。だから、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 ;
}
OK。私はなぜDrupalのWYSIWYGがどのスタイルを使用するのかを「知る」ことが難しいと思っています。しかし、ノードタイプごとに異なるCSSを編集ページに読み込む方法はありますか?または、別のdivタグを別のページのエディタに追加できますか?そのようにテキストをターゲットに設定できますか? – Evans
残念ながら、エディタは独自のcssを持つiframeの内部にあるので、エディタの周りにタグを追加することは役に立ちません。これはjavascriptエディタを使用しようとする多くの「トラウマ」の1つです。 WysiwygモジュールがスタイルシートのフィールドでPHPプログラミングを許可していれば、動的に生成されたスタイルシートを使用することができます...しかし、これ自体も何らかの形で役に立つプログラミングを必要とします。私のコンドームは...それは美しい願いで、これがあれば素敵ですが、答えはまだありません。 – James
よろしくお願いいたします。 – Evans