Drupal: TinyMCEで完全なHTMLページを編集
前回に続いて、DrupalでHTMLニュースレターを発行しようとしているのだけど、TinyMCEはHTMLヘッダ部分をばっさり切り落としてしまう。これだとCSSの設定とかが出来なくて困る。なにか良い方法は、と思っていたら、fullpagesというTinyMCEのプラグインを使うことで、ヘッダ入りの完全なHTMLを編集できることが判明。
ただ、これをDrupalでどうやって有効にするのだろう?とりあえず前回と同じように、phptemplateを使って設定:
function phptemplate_tinymce_theme($init, $textarea_name, $theme_name, $is_running) {
$init = theme_tinymce_theme($init, $textarea_name, $theme_name, $is_running);
if (isset($init)) {
$init['convert_urls'] = 'false';
//↑convert_urlsを無効にする$init['plugins'] = 'fullpage';
//↑fullpageプラグインを有効にする
}return $init;
}
これでいけるようになりました。
20061206 訂正
上記の方法だと、プラグイン名を格納している配列を上書きしてしまうため、他のプラグインが無効になってしまうことが発覚。。。
これは配列なので、以下のような方法で配列に要素を追加する形でプラグインを有効にしました:
//$init['plugins'] = 'fullpage';
//↑まちがい。他のプラグインが無効になっちゃうarray_push($init['plugins'],'fullpage');
他にも有効にしたい場合、単純にカンマ区切りでプラグイン名を足していけばOK。
20061206 追記:
HTMLニュースレターがヘッダー付きで送れるようになったのは嬉しい限りなのだけど、今度は普通の投稿の際にもヘッダが挿入されるようになってしまった。この場合、ヘッダの
modules/tinymce/jscript/tiny_mce/plugins/fullpage/editor_plugin.js
これの中に、以下のようなコードがあります:
tmp+='\t
'+title+' \n';
この、'+title+'という部分をサクっと消してできあがり。
それから、Drupal側のinput formatを編集して、'Filtered HTML'モードで、ほとんどのタグを有効にする、という地味な作業をする。こうすることで、都合の悪いHTMLやらbodyやらのタグだけ無視してくれる、通常投稿向け設定のできあがり。ただ、これは一般ユーザーには使わせない設定にしました。
ところで、僕は今日まで知らなかったけど、速度向上のために、FirefoxはJavascriptをキャッシュして、ブラウザセッションとして使うらしく、Javascriptを変更→アップロード→テストとやっても、キャッシュを消さないと、クラックが成功したかどうか分かりません。source
これで3時間くらい無駄にしました。。。