0

Wysiwyg モジュールを介して含まれる TinyMCE を備えた Drupal 7。Wysiwygの設定画面で「貼り付け」が可能になりました。エディターは一般的に問題なく動作していますが、現在、TinyMCE の貼り付け機能を変更して、HTML タグからすべての属性を削除しようとしています。(クライアントの要件、質問しないでください。)

モジュールファイルに以下を追加しました。

function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
    if ($context['profile']->editor == 'tinymce') {
        drupal_add_js(drupal_get_path('module', 'MYMODULE').'/js/tinymce_callbacks.js');

        $settings['paste_preprocess'] = 'MYMODULE_tinymce_paste_preprocess_callback';
    }
}

次の内容でtinymce_callbacks.jsを作成しました。

function MYMODULE_tinymce_paste_preprocess_callback(pl, o) {
    alert(o.content);
    o.content = "-: CLEANED :-\n" + o.content;
}

実際の TinyMCE 貼り付けボタンは IE でのみ機能しますが、ctrl-V ショートカットはすべてのブラウザーで機能します。ただし、コールバックは呼び出されません。

私はいくつかの掘り出し物をしました。paste_preprocess 設定は間違いなく正しい JavaScript オブジェクトに追加されていますが、それを参照する唯一のコード (TinyMCE Paste プラグイン) は読み込まれていません。問題は TinyMCE ではなく Drupal にあるようです。

Drupal が TinyMCE プラグインを正しくロードするための助けをいただければ幸いです。

4

1 に答える 1

1

「貼り付け」の TinyMCE プラグインが実際にロードされていることを確認します。何らかの理由で、Drupal では、「ボタンとプラグイン」の下に単に「貼り付け」というタイトルのエントリがあります。ただし、これは、貼り付け前処理コールバックの発生に必要な「貼り付け」プラグインを有効にしません。

代わりに、[テキストの貼り付け] または [Word からの貼り付け] が有効になっていることを確認してください。これにより、「貼り付け」プラグインが読み込まれ、貼り付け前処理のコールバックが発生します。

于 2016-02-08T10:32:15.080 に答える