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ニュースレターがヘッダー付きで送れるようになったのは嬉しい限りなのだけど、今度は普通の投稿の際にもヘッダが挿入されるようになってしまった。この場合、ヘッダのが投稿した文章の上部に表示されてしまう。'Untitled document'だって。ああ。。。 本当はニュースレター編集時にのみfullpage<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>を有効にしたいのだけど、ちょっと明日納品というタイミングなので、とりあえず'Untitled document'という文字列が表示されないように、TinyMCEの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を直接ゴニョゴニョっとします。 おそろしく階層が深いTinyMCEの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リから、以下のファイルを探します:</p> <blockquote> <p>modules/tinymce/<a class="keyword" href="http://d.hatena.ne.jp/keyword/jscript">jscript</a>/tiny_mce/plugins/fullpage/editor_plugin.js</p> </blockquote> <p>これの中に、以下のようなコードがあります:</p> <blockquote> <p>tmp+='\t<title>'+title+'\n';

この、'+title+'という部分をサクっと消してできあがり。

それから、Drupal側のinput formatを編集して、'Filtered HTML'モードで、ほとんどのタグを有効にする、という地味な作業をする。こうすることで、都合の悪いHTMLやらbodyやらのタグだけ無視してくれる、通常投稿向け設定のできあがり。ただ、これは一般ユーザーには使わせない設定にしました。

ところで、僕は今日まで知らなかったけど、速度向上のために、FirefoxJavascriptをキャッシュして、ブラウザセッションとして使うらしく、Javascriptを変更→アップロード→テストとやっても、キャッシュを消さないと、クラックが成功したかどうか分かりません。source
これで3時間くらい無駄にしました。。。