MT4で、trim_toの制限文字数超えたときだけ"..."を付ける方法。

昔書いた「MT3.3のtrim_toでtrimされた時に"..."を付ける」ですが、MT4になって若干trim_toの実装が変わっていたので、MT4でtrim_toに"..."をつける方法をまとめておきます。

書き換えるファイルはMT3.3と同じく

lib/MT/Template/ContextHandlers.pm 

MT3.3では

sub _fltr_trim_to {
    my ($str, $val, $ctx) = @_;
    require MT::I18N;
    $str = MT::I18N::substr_text($str, 0, $val) if $val < MT::I18N::length_text($str);
    $str;
}

となっていましたが、MT4では

sub _fltr_trim_to {
    my ($str, $val, $ctx) = @_;
    $str = substr_text($str, 0, $val) if $val < length_text($str);
    $str;
}

と、若干簡素化されています。

ここを

sub _fltr_trim_to {
    my ($str, $val, $ctx) = @_;
    $str = substr_text($str, 0, $val)."..." if $val < length_text($str);
    $str;
}

と書き換えてやると、trim_toで制限文字数を超えたときだけ「...」が後ろに付くようになります。
なお、これをサイト全体に反映するには、一度再構築が必要です。

お試しあれ。

2 trackbacks in legacy system
2008年02月17日 MTのバージョンをあげた時にやるべき4つのこと - 京の路

自分の為にメモメモ。 1日これを忘れてただけで、数千件のコメントスパムと数百件のトラックバックスパムが届いてました。危ない危ない。 特に(2)を忘れると、...

2008年08月13日 指定した文字数以降をカットして「...」をつける方法 - かたつむりくんのWWW

Movable Type でブログ記事の上にパンくずリストを表示させるとき、ブロ...