Home > 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

Comment Form

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 > タイトルのトリミング

Search
Tag Cloud
Favorite
ひすいの国
ひすいの国―徐福と始皇帝奇伝 (1)
諏訪 緑
小学館 2008-08-08

彩雲国物語
彩雲国物語 黎明に琥珀はきらめく
雪乃 紗衣
角川書店 2008-05-01

B000VJWGK2
空の軌跡 the 3rd
ゲーム・ミュージック
Falcom 2007-09-27

Return to page top