Home » February 2007 » どこでもConvert Line Breaksするための2つのTips

どこでもConvert Line Breaksするための2つのTips

Rightfields でも改行したい! - greenplastic.net

convert_breaksはフィルターではなく、特定のMTタグが持っているオプションに過ぎませんから、MTExtraFieldValueに与えても機能しません。

解決方法は2つあって、ひとつは下のようなグローバルフィルタを提供する極小プラグインを使う方法。

package MT::Plugin::ConvertBreaksAnywhere;
use strict;
use MT 3.3;
use base qw(MT::Plugin);
 
my $plugin = __PACKAGE__->new({
  name => 'ConvertBreaksAnywhere',
  global_filters => {
    'convert_breaks_anywhere' => sub { MT::Util::html_text_transform($_[0]) }
  }
});
MT->add_plugin($plugin);

このプラグインを使えば、どんなMTタグでもフィルタを適用することができます。

<$MTExtraFieldValue field="movie_introduction" convert_breaks_anywhere="1"$>

もうひとつは、実はMovable Typeでは「__default__」という名前のテキストフィルタが定義されていて、その中身はConvert Line Breaksそのものになっているので、それを利用するという方法。上のプラグインを使わずに

<$MTExtraFieldValue field="movie_introduction" filters="__default__"$>

と書くことができます。こっちの方法はプラグインいらずで多分ダイナミックパブリッシングの場合にも使えますが、ドキュメントされていない仕様です。

このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/481

Links referred to this entry

Comments (2)

  1. filters="__default__" の方にさっそく書き換えさせていただきました。
    いつも情報ありがとうございます。
    ところで、ドキュメントされていない仕様ってどのくらいあるものなんでしょう。

  2. どれくらいってソースの長さくらいですね(笑)

    このデフォルトフィルターはもともとMTEntryBodyなどをレンダリングする時点で、エントリーに出力形式が指定されていないという特殊な状況を救うためにあるもののようです(どういう形式で出力すればよいのか判断できませんから)。Version 2.6の頃にはすでにあったので半ば仕様のような、そうでないような。積極的には勧めませんが分かってて使う分には問題ないと思います。

Post a comment

Remember me?