- 2004-11-30 (火)
- Movable Type
- Reading time: 4分ぐらい
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! 前後に空白行を入れてあげればエントリー内でもブロック要素をきれいに認識してくれるようになりました。
こちらもどうぞ!
- 最近のコメントを表示
- Blog質問箱にてコメントが付いた最新のエントリー5本を表示し、それぞれのエントリーごとに最新のコメント4本までをコメント日付を付けて表示するようにできましたので、そのメモです。 <div class="side"...
- MTIfNonZeroをMT2.661でも
- HINAGATAさんのテンプレートで見つけ、サイトでのエントリで詳しい説明も見つけた便利な条件分岐タグ、MTIfNonZero。試してみてもうまく動作しなかったのはどうやらMovable Type 3 以降で実装されたタグだったからなんです...
- エントリー編集画面でショートカットキーを使う
- エディタを使わずmovable typeで直接エントリーを書く場合は、編集画面で「確認」「保存」「編集画面へ戻る」などのボタンを多用します。文章の流れを気にする場合や写真を多くはさむ場合などは特に確認画面と編集画面の往復が増えてしまいます。...
- MT-notifierが動いたっ!
- 以前から取り組んでたMovable Typeのプラグイン、MT-notifierがやっと正常に稼動しました。 エントリーにコメントをつけたあと、それに対して返事があったかどうか気になったりしますよね。MT-notifierはコメントをつける...
- ブログをケータイ対応にしてみました
- いつもbuslogをご訪問いただきましてありがとうございます。おかげさまでカウンタが毎日300~500近くまで回るようになっていてびっくりしてます。同じIPアドレス(※)ならカウントしないカウンタなのである程度までは信頼できる数字だと信じて...
- Newer: エンジンオイルがなくなったとき、何を使いますか
- Older: amazonっていい加減?
- Tags → Aircooled-Search:
- Movable Type




