MT3.1でもエントリやタイトルに字数制限をかけて文字数を調整できる、その方法
エントリ書いたはいいがタイトルが長すぎたせいで、改行され、デザインが見るも無残な姿になって「あーんもぅっ!」と思わずイヤラシイ声を漏らしてしまったアータ!
文字数制限にLet’s Try。
MovableType3.1の環境下でも試しましたのでほぼ問題ないと思います。
M’s folder: MT 長いタイトルをトリミングする
インストールの手順は長いタイトルをトリミングする: *vitalage*blog
が一番わかりやすかった印象です。
このプラグインがMT3.1でも使うことができました。
MovableType3.1でも全く同様のインストで行えます。
1.ソースをコピる
EUCなら
# 指定された文字数(半角文字数)にトリミングするフィルタ
# 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;
UTF-8なら
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;
人生迷い箸: 日本語対応トリミングフィルタ(再度バグ修正)ではJcodeを使ってますが上記のは使わないバージョン。
Jcodeを利用するのが好きな人は人生迷い箸さんのソースを。
2.テキストエディタに貼って保存
メモ帳とかTerapadとかで保存。ファイル名は「mt-trimj.pl」とかにでもしておくのがいいらしいです。つーかまぁ拡張子の「.pl」さえ変更しなければいいんですけど。
3.「plugin」フォルダ内にアップロード
アップすればOK。
ここで示しているpluginフォルダというのはトップの階層にあるはずです。その中に入れてってことです。
古いMTのバージョンでは、pluginフォルダがあるんだかないんだかよくわかりませんが、確かなかったかと。ですのでそれらバージョンの場合何処にいれていいのか私は知りません。どっかで調べてください。
4.MovableTypeのテンプレートを変更する
文字数制限をかけたいところに「 trimj_to=”字数(半角カウントで)”」と付記する。
例:
<$MTEntryTitle$> → <$MTEntryTitle trimj_to="40"$>
<$MTEntryBody$> → <$MTEntryBody trimj_to="200"$>
5.リビルド
完了です。
9/24追記:
ちょっと問題発見しました。
$MTEntryBodyなどにこのタグを追加すると、PタグやBRタグといったHTMLタグも文字数としてカウントしているようですね。
これはこまった・・。純粋なテキストだけになんとか絞れませんでしょうかね。
長いタイトルをトリミングする
カテゴリリストは長くなると見づらかったので、適当な文字数だけ表示するように変更。…
とても見やすい記事をかかれていらっしゃるので、こちらからもTBさせていただきました。
MT3.1でもちゃんと機能するんですね。めもめも_φ(.. )
はじめまして。
MT3でも動くということで、安心しました。
ちなみにMT2系では「/plugins」ディレクトリです。
> ryokoさん
誉めてもなにもでませんぜぇ。
> muraさん
んと、正確には「3」ではなくて「3.1」なんです。
なので3で動くかどうかの検証はしてません。
まー、3で問題が出る確率は0に近いぐらい低いとは思いますけどんねぃ。
MT2系の場所教えてくれてどもです。
9/24追記のことですが、
タグ全部抜けたらいいなぁ・・・なーんて。どなたかやってくれねぇかなぁ。
ひとまかーせ。
機械忍者さんはじめまして。
ヴァリウム男爵@人生迷い箸です。TBありがとうございます。
単にHTMLタグを抜いてしまえばよいのであれば、remove_htmlアトリビュートと併用されてはいかがでしょうか。たとえば、
<$MTEntryBody remove_html="1" trimj_to="40"$>
って感じで。的外れだったらゴメンナサイ。
うぬぁああ。試してから返事する予定でしたが、先に。
ヴァリウム男爵さん、情報ありがとうございます。
試すのみ。
試したらエントリで返事をば。
長すぎるタイトルをトリミング
長すぎるタイトルをつけた場合にエントリ表示が2行になってしまったりしてせっかくの…
タイトルのトリミング
このブログも、ときどきトラックバックを頂けるようになってきました。 ただ、積極的…