random image
2004年11月30日

MT2.661でblockquoteを綺麗に挿入

Movable Type 2.661でエントリーを作成する際にConvert Line Breaksで一部うまくhtmlソースを作成してくれないところを修正しました。

Convert Line Breaksは基本的に、エントリー編集画面で書いたテキスト内に改行があればbr要素を入れ、空白行で囲まれていればp要素でくくって段落とするという感じでhtmlソースを自動で書いてくれているようなのですが、blockquote要素などのブロック要素を


<blockquote>
ダミーテキストダミーテキストダミーテキストダミーテキスト
</blockquote>

と入れてエントリーを作成すると、movable typeが吐き出すソースは


<blockquote>
<p>ダミーテキストダミーテキストダミーテキストダミーテキスト</p>
<p></blockquote><p>

なんてことになってました。ほかにもh4などといった見出し要素も使えません。調べまくって見つけたのがBoycott Street 221Bさんとその大元となるzakkiさん。mt/lib/MTにあるUtil.pmの一部を変更するようです。

Util.pmの177行目付近からはじまるサブルーチンが、Convert Line Breaksの核となる部分ですね。


sub html_text_transform {
    my $str = shift;
    $str ||= '';
    my @paras = split /\r?\n\r?\n/, $str;
    for my $p (@paras) {
        if ($p !~ m/^<(?:table|ol|ul|pre|select|form|blockquote|div|q)/) {
            $p =~ s!\r?\n!<br />\n!g;
            $p = "<p>$p</p>";
        }
    }
    join "\n\n", @paras;
}

これを、Movable Type3.11-jaのUtil.pmから同じサブルーチンをまるまる移植してみました。


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

これでOK! 前後に空白行を入れてあげればエントリー内でもブロック要素をきれいに認識してくれるようになりました。

前後のエントリー
Tags
Tags → Aircooled-Search
「MT2.661でblockquoteを綺麗に挿入」 へのトラックバックURL

トラックバックスパムと区別するため、トラックバック元の記事中にこちらへのリンクを入れていただきますようお願いします。詳しくはトラックバック・ポリシーをご覧ください。


Posted by masahiro : 2004年11月30日

「MT2.661でblockquoteを綺麗に挿入」 へいただいてるコメント

「MT2.661でblockquoteを綺麗に挿入」へのコメントはまだありません。あなたのコメントをお待ちしてます。

古いエントリーにもお気軽にコメントくださいね。ちゃんとこちらにお知らせメールが飛んできますので、コメントをいただいたことに気づきます。

コメントお待ちしてます


















投稿ボタンを押したあと、処理に1分ほど時間がかかります。二度押しせず、ちょっとだけお待ちください。

お待ちの間のお茶の代わりに、クリックで進めるスライドショーできました。新しい画面が開き、今までの画像がテキトーに表示されます。(ナローバンド版はこちらです。)

buslogについて

my bus buslogは、1966年式ワーゲンバスに乗るmasahiroのサイトです。

バスの日々のメンテナンスやドライブ、試したアイテム、バスやクルマ一般についての情報を主に取り上げたブログがメインです。→詳しく

サイト内検索

RSS

RSS 1.0 RSS 2.0 ATOM 0.3 feedbuner

buslogをメールで購読する:

powered by FeedBurner

アクセスランキング