<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;
}