今のところホビーとパンヤ中心のごちゃまぜサイト RSS
BLOG | PROFILE | FIGURE SCHEDULE | THUMBNAIL

2005年10月 2日

「改行を変換する」でPタグを使わないようにする

Movable Typeでエントリーを作成するとき、テキストフォーマットで「改行を変換する」を選ぶと、改行の仕方に応じてPタグとBRタグが自動的に挿入される。場合によってはPタグを使用せず、改行をそのままBRタグに変換する場合が都合がいいこともあるので、その方法を備忘録として残しておこうと思う。

(MTをインストールしたディレクトリ)/lib/MT/Util.pmの、html_text_transformという関数を変更する。ちなみにMTのバージョンは3.171で確認しているので、これより違いの大きいバージョンだと通用しないかもしれない。

さて、変更前はこうなっている。

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|select|blockquote|address|div|hr)@) {
            $p =~ s!\r?\n!<br />\n!g;
            $p = "<p>$p</p>";
        }
    }
    join "\n\n", @paras;
}

これを次のように変更する。なお、行の先頭に特定のタグがある場合は改行があっても変換されないようになっているが、これにTR・TDタグも適用されるよう、if文中のマッチ条件を追加しておく。

sub html_text_transform {
    my $str = shift;
    $str ||= '';
    my @paras = split /\r?\n/, $str;
    for my $p (@paras) {
        if ($p !~ m@^</?(?:h1|h2|h3|h4|h5|h6|table|tr|td|ol|dl|ul|menu|dir
        |p|pre|center|form|fieldset|select|blockquote|address|div|hr)@) {
            $p .= "<br />";
        }
    }
    join "\n", @paras;
}

後は適当にテンプレート等を変更し、見栄えを調整してやればOK。

【2008/04/28 01:55追記】
MT4.1でも動作確認が取れました。

投稿時間 06:28 | Movable Type

トラックバック

このエントリーのトラックバックURL:
http://dorayaki.mariobros.net/mt/mt-tb.cgi/382

2007年12月22日 23:15
【貧弱一般人】 「改行を変換」でBRタグを使う

MTの「改行を変換」でPタグではなくBRタグを使うようにします。

コメント

コメントしてください




保存しますか?


Insecure Zone - Since March 1998.