技の宝庫、mixi小粋ユーザーコミュ板で発見。
ちょっとばかり長いタイトルを付けたくなることがあります。
でもサイドバーで改行されてしまってなんとなく…なんとなく、です。(笑)
ツリー化をしたら余計に目立つんだ、これが。
改行されたところに若干の隙間できちゃうんですね。
そこで技の宝庫の出番。(謝)
やむやむのさえらさんが詳しく記事にされてました。
またお世話になりそのまんまマネさせて頂きました。
・やむやむ さん : 長過ぎるタイトルもすっきり一行に
プラグインは
・人生迷い箸 さん→ こちら で配布されています。
以下覚書き。
◇タイトルのトリミング
下記のようにテキストエディタにコピペし、ファイル名をmt-trimj.pl とつけて
ブログのエンコード(UTF-8とか)にして保存。→MT/Plugins/ にアップロード。
# 指定された文字数(半角文字数)にトリミングするフィルタ
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;
各テンプレートの必要なところに
【例】<$MTEntryTitle$>を<$MTEntryTitle trimj_to="26"$>に変更。
数字の部分がタイトル文字数(1バイト)、日本語は2バイトだから
26ならば13文字以上になるとタイトルのお尻に「...」が付いて一行に。
文字数はサイドバーの広さ等によって適宜変更する。
...Close