スポンサーサイト
この広告は60日以上更新がないブログに表示されております。
新しい記事を書くことで広告を消すことができます。
新しい記事を書くことで広告を消すことができます。
- | permalink | - | -
# 指定された文字数(半角文字数)にトリミングするフィルタ
# EUC-JP 専用
package MT::Plugin::Trimj;
use MT::Template::Context;
MT::Template::Context->add_global_filter(trimj_to => sub {
my($str, $nstr, $ctx) = @_;
my $sippo = '...';
my $lenstr = length($str);
if($lenstr <= $nstr){return $str;}
my $out = substr($str,0,$nstr);
if ($out =~ /¥x8F$/ or $out =~ tr/¥x8E¥xA1-¥xFE// % 2) {
chop $out;
if($out =~ /¥x8F$/){
chop $out;
}
}
$out .= $sippo;# 尻尾を付けたくない場合は、コメントアウトのこと。
return $out;
});
1;
package MT::Plugin::Trimj;
use MT::Template::Context;
MT::Template::Context->add_global_filter(trimj_to => sub {
my($str, $nstr, $ctx) = @_;
my $sippo = '...';
my $lenstr = length($str);
if ($lenstr <= $nstr) { return $str; }
my $out = substr($str,0,$nstr);
if ($out !~ /[?x00-?x7F]$/) {
$out =~ s/[?xC0-?xFD]$//;
$out =~ s/[?xE0-?xFD][?x80-?xBF]$//;
$out =~ s/[?xF0-?xFD][?x80-?xBF]{2}$//;
}
$out .= $sippo; # 尻尾を付けたくない場合は、コメントアウトのこと。
return $out;
});
1;
例:
<$MTEntryTitle$> → <$MTEntryTitle trimj_to="40"$>
<$MTEntryBody$> → <$MTEntryBody trimj_to="200"$>
この記事に対するコメント
MT3.1でもちゃんと機能するんですね。めもめも_φ(.. )
MT3でも動くということで、安心しました。
ちなみにMT2系では「/plugins」ディレクトリです。
誉めてもなにもでませんぜぇ。
> muraさん
んと、正確には「3」ではなくて「3.1」なんです。
なので3で動くかどうかの検証はしてません。
まー、3で問題が出る確率は0に近いぐらい低いとは思いますけどんねぃ。
MT2系の場所教えてくれてどもです。
タグ全部抜けたらいいなぁ・・・なーんて。どなたかやってくれねぇかなぁ。
ひとまかーせ。
ヴァリウム男爵@人生迷い箸です。TBありがとうございます。
単にHTMLタグを抜いてしまえばよいのであれば、remove_htmlアトリビュートと併用されてはいかがでしょうか。たとえば、
<$MTEntryBody remove_html="1" trimj_to="40"$>
って感じで。的外れだったらゴメンナサイ。
ヴァリウム男爵さん、情報ありがとうございます。
試すのみ。
試したらエントリで返事をば。