<p>自動挿入の仕様を変更
個人的な好みの問題ではあるが、 <p>という段落タグがあまり好きではない。 というのも、このタグを入れると、自動的に前後に空白行を入れてしまうので、 デザイン面で苦労することが多いからだ。 MTの場合、改行が2つ以上続くと、そこで一段落と判断し、 段落毎に<p>?</p>に収めようとする。 確かに、『論理的』には正しいことなのだけど、 <strong>なんて使うことはほとんどないように、 基本的にはデザイン性と利便性とで選べるようにすべきかと。 というわけで、この仕様を変更する。 変更するファイルは、/lib/MT/ にある、Util.pm。 このファイルは、MTで使うユーティリティーが詰まったモジュールだが、 その中の、html_text_transformというサブルーチン(246行目/v3.01)が、 この仕様を制御しているので、とりあえずその中の、
$p = “<p>$p</p>”;行をコメントアウトする。
# $p = “<p>$p</p>”;しかし、これだけでは実は問題が生じる。 というのも、『前述の改行2つで?』というチェック部分で、空白行を削除してしまうので、 各段落がくっついて表示されてしまう。 しょうがないので、各段落の最後に空白行を再び追加する。 ルーチンの最後で、段落毎に分割したデータを、再び1つにまとめているので、 その際に、各段落毎に空白行を入れるようにすればよい。
join “\n\n”, @paras; ↓ join “<br />\n<br />\n”, @paras;というわけで、最低限の変更による変更後。
sub html_text_transform { my $str = shift; $str ||= ”; my @paras = split /\r?\n\r?\n/, $str; for my $p (@paras) { if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|table|ol|dl |ul|menu|dir|p|pre|center|form|fieldset|blockquote|address|div|hr)@) { $p =~ s!\r?\n!<br />\n!g; # $p = “<p>$p</p>”; } } join “<br />\n<br />\n”, @paras; }



