Movable Type 備忘録

 ModTextFilter プラグイン

さてさて、今度は The blog of H.Fujimoto とこで公開された、ModTextFilter プラグインについてです。

以前から使ってたプラグインの一つでして、わたしはコメント投稿で利用させてもらってます。わたしの中では必須のプラグインの一つです。
何で必須かというと、改行を <p> タグで区切ってくれるからです。

ずっとデフォルトの機能は使ってないので今はどうか分かりませんが、昔は改行を <br /> タグで区切られてました。なので、改行を入れた数だけ <br /> タグが自動付加されてました。

でも、ModTextFilter プラグインでは、改行 2 つ入れる( 空行 )と <p> タグで区切ってくれるので気に入ってます。
しかも、ちゃんと <div> タグとか <ul> タグを判定して余計な <br /> タグが入らないようにしてくれてます。

わたしが投稿したコメントをみてくれてる人はもしかすると気づいてるかもしれませんが、わたしはコメント投稿で普通にリストタグを使ってます。
これは ModTextFilter プラグインのおかげかと思ってます。

わたし専用に ModTextFilter プラグインをカスタマイズ

そんなお気に入りのプラグインがもっと便利になりました。
とうとうエンコード機能( たとえば、< を &lt に変換 )まで付いてしまったのです。

コメントしてくれる人にはエンコードしてから投稿してくれる人もいますが、そうでない人もいます。
実は裏ではコメント公開の際に気づいたときは、わたしが手動でエンコードしてたのです (; ̄∇ ̄A

今のところわたしのサイトではコメント投稿時に使ってるので、デフォルトでエンコードするようチョビッとだけプラグインをカスタマイズしてみました。
もちろんわたし専用ですのでご参考までに。

本来のエンコード機能は、任意の場所で <enchtml>~</enchtml> で囲ったテキストのみ行われます。それをデフォルトでエンコードさせたいので、単純に ModTextFilter.pl を以下のように追加することでデフォルトでエンコードされるようになります。

ModTextFilter.pl

  1.     my $str = shift;
  2.     my ($pattern, $found, $replace, $tag, $attr, $inner, $tags);
  3.  
  4.     $str ||= '';
  5. ## 2008.08.05 ADD bzbell
  6.     $str = '<enchtml>'.$str.'</enchtml>';
  7. ######################
  8.     # convert to html entities
  9.     while ($str =~ /(<enchtml>(\r?\n)?(.*?)(\r?\n)?<\/enchtml>)/s) {
  10.         $found = quotemeta($1);
  11.         $replace = encode_html($3);
  12.         $str =~ s/$found/$replace/;
  13.     }

実際のエンコード処理は赤字の部分で行われています。
ですので、赤字より前で元テキストを <enchtml> と </enchtml> で囲ってあげればいいわけですね (; ̄∇ ̄)b
ということで、青字の部分を追加しました。

以上です。
この変更は非承認です。あくまでもわたしのサイトではこのように使ってみました・・・という参考程度です。
そそ、これやると HTML タグは使えなくなりますので。

プラグインのインストールや使い方などは The blog of H.Fujimoto さんとこの説明を読んでくださいね。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード