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タグも文字数としてカウントしているようですね。
これはこまった・・。純粋なテキストだけになんとか絞れませんでしょうかね。

機械忍者

某SEO会社(?)勤務。 多分日本語よりHTMLの方が得意です。 最近はRubyとかいうキラキラな言語も勉強中です。 SEOはもう標準スキルになってきてると思うので正直もうあんまり昔ほどの熱意は感じません。 新たに躍動してる人も多いですしね。 だれか強化骨格コスプレあったら教えてください。

コメント

  1. *vitalage*blog より:

    長いタイトルをトリミングする

    カテゴリリストは長くなると見づらかったので、適当な文字数だけ表示するように変更。…

  2. ryoko より:

    とても見やすい記事をかかれていらっしゃるので、こちらからもTBさせていただきました。
    MT3.1でもちゃんと機能するんですね。めもめも_φ(.. )

  3. mura より:

    はじめまして。
    MT3でも動くということで、安心しました。
    ちなみにMT2系では「/plugins」ディレクトリです。

  4. 機械忍者 より:

    > ryokoさん
    誉めてもなにもでませんぜぇ。
    > muraさん
    んと、正確には「3」ではなくて「3.1」なんです。
    なので3で動くかどうかの検証はしてません。
    まー、3で問題が出る確率は0に近いぐらい低いとは思いますけどんねぃ。
    MT2系の場所教えてくれてどもです。

  5. 機械忍者 より:

    9/24追記のことですが、
    タグ全部抜けたらいいなぁ・・・なーんて。どなたかやってくれねぇかなぁ。
    ひとまかーせ。

  6. 機械忍者さんはじめまして。
    ヴァリウム男爵@人生迷い箸です。TBありがとうございます。
    単にHTMLタグを抜いてしまえばよいのであれば、remove_htmlアトリビュートと併用されてはいかがでしょうか。たとえば、
    <$MTEntryBody remove_html="1" trimj_to="40"$>
    って感じで。的外れだったらゴメンナサイ。

  7. 機械忍者 より:

    うぬぁああ。試してから返事する予定でしたが、先に。
    ヴァリウム男爵さん、情報ありがとうございます。
    試すのみ。
    試したらエントリで返事をば。

  8. 長すぎるタイトルをトリミング

    長すぎるタイトルをつけた場合にエントリ表示が2行になってしまったりしてせっかくの…

  9. タイトルのトリミング

    このブログも、ときどきトラックバックを頂けるようになってきました。 ただ、積極的…