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! 前後に空白行を入れてあげればエントリー内でもブロック要素をきれいに認識してくれるようになりました。
- 前後のエントリー
- 最近のエントリー
-
- チョロQバス動画5つ
- ビートルで無茶してる動画3つ
- アーリーバスで無茶してる動画3つ
- レイトバスで無茶してる動画3つ
- 今日でワーゲンバス歴○○日目
- これならベバストヒーターの代わりになるかも?
- 飲酒運転を疑似体験できる飲酒運転防止ポスター
- NEXCO中日本で速度抑制キャンペーン、ETC開閉バーの開くタイミングを遅く
- ブラウンの新ウェブCM、「ご当地モーニングレポート」
- 世界「最低」の車登場 車高わずか48センチ
- にじます試食レポ 燻製1匹、金太郎味噌、金太郎漬け編
- にじます試食レポ 味噌漬け、粕漬け、ベーコン編
- にじます試食レポ 塩焼き、手作りこんにゃく、燻製3枚おろし編
- なぜブラジルに住むか、その答えはこの写真に
- 想像力あふれるクルマの使い方
Posted by masahiro : 2004年11月30日
「MT2.661でblockquoteを綺麗に挿入」 へいただいてるコメント
「MT2.661でblockquoteを綺麗に挿入」へのコメントはまだありません。あなたのコメントをお待ちしてます。
古いエントリーにもお気軽にコメントくださいね。ちゃんとこちらにお知らせメールが飛んできますので、コメントをいただいたことに気づきます。



