- 2005年5月 4日
- MovableType
わかりやすいタイトルは必ずしも短いタイトルとは限らないわけで、しばしば複数行に渡ってしまうタイトルを付けてしまうことがあります。記事本文は仕方ないとしても、サイド表示は正直いってダサい。何より、1行タイトルと2行タイトルが混在すると、どれがどれだかよくわからなーい!そこでみつけたのがタイトルのトリミングです。人生の迷い箸|日本語対応トリミングフィルタのお世話になりました。ヴァリウム男爵さん、ありがとうございます。以下、覚え書き。
1.下記のようにエディタへコピペし、mt-trimj.pl のファイル名で保存。
# 指定された文字数(半角文字数)にトリミングするフィルタ
package MT::Plugin::Trimj;use MT::Template::Context;
use MT::ConfigMgr;
MT::Template::Context->add_global_filter(trimj_to =
> sub {
my($str, $nstr, $ctx) = @_;
my $sippo = '...';
my $tmpstr = $str;
my $c = MT::ConfigMgr->instance->PublishCharset;
my $conv_in;
if (lc $c eq lc 'Shift_JIS') {
$conv_in = 'sjis';
} elsif (lc $c eq lc 'ISO-2022-JP') {
$conv_in = 'jis';
} elsif (lc $c eq lc 'UTF-8') {
$conv_in = 'utf8';
} elsif (lc $c eq lc 'EUC-JP') {
$conv_in = 'euc';
}
my $jcnv;
eval 'use Jcode;';
if($@){
require 'jcode.pl';
$jcnv = 'jcode::convert';
}else{
$jcnv = 'Jcode::convert';
}
if ($conv_in ne 'euc') {
&$jcnv(\$str, 'euc', $conv_in);
}
# 比較をここに移動
my $lenstr = length($str);
if($lenstr <= $nstr) {
return $tmpstr;
}
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;
# 尻尾を付けたくない場合は、コメントアウトのこと。
if ($conv_in ne 'euc') {
&$jcnv(\$out, $conv_in, 'euc');
}
return $out;
});
1;
2.mt-trimj.plをMT/Plugins/ にアップロード。
3.長いタイトルを表示したくないテンプレート(メイン、カテゴリなど)の修正。
<$MTEntryTitle$> ⇒ <$MTEntryTitle trimj_to="26"$>
数字の部分はタイトル文字数(1バイト)です。日本語は2バイトだからこの場合、13文字以上になるとタイトルの語尾に「...」が付きます。修正をしないところはそれまでどおりタイトルがフルで表示されます。
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://meatia.net/nekoban/mt-tb.cgi/197
- Listed below are links to weblogs that reference
- タイトルのトリミング from 猫派の読書空間
Home > MovableType > タイトルのトリミング



