機械忍者

インターネット周りの事柄、子供の成長記録、グルメ情報など。まぁ適当に。
<< January 2012 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

スポンサーサイト

この広告は60日以上更新がないブログに表示されております。
新しい記事を書くことで広告を消すことができます。
- | permalink | - | -
<< メタルギアソリッド3 スネークイーター 最新ムービーとキャラクター紹介 | main | AskJeeves(アスクジーブス)が日本上陸 >>

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タグも文字数としてカウントしているようですね。

これはこまった・・。純粋なテキストだけになんとか絞れませんでしょうかね。

BLOG(MovableType等) | permalink | comments(6) | trackbacks(4)

この記事に対するコメント

とても見やすい記事をかかれていらっしゃるので、こちらからもTBさせていただきました。
MT3.1でもちゃんと機能するんですね。めもめも_φ(.. )
ryoko | 2004/08/24 9:47 PM
はじめまして。
MT3でも動くということで、安心しました。

ちなみにMT2系では「/plugins」ディレクトリです。
mura | 2004/08/25 12:03 AM
> ryokoさん
誉めてもなにもでませんぜぇ。


> muraさん
んと、正確には「3」ではなくて「3.1」なんです。
なので3で動くかどうかの検証はしてません。
まー、3で問題が出る確率は0に近いぐらい低いとは思いますけどんねぃ。
MT2系の場所教えてくれてどもです。
機械忍者 | 2004/08/25 4:58 PM
9/24追記のことですが、
タグ全部抜けたらいいなぁ・・・なーんて。どなたかやってくれねぇかなぁ。
ひとまかーせ。
機械忍者 | 2004/09/23 4:24 PM
機械忍者さんはじめまして。

ヴァリウム男爵@人生迷い箸です。TBありがとうございます。

単にHTMLタグを抜いてしまえばよいのであれば、remove_htmlアトリビュートと併用されてはいかがでしょうか。たとえば、

<$MTEntryBody remove_html="1" trimj_to="40"$>

って感じで。的外れだったらゴメンナサイ。
ヴァリウム男爵 | 2004/09/23 4:37 PM
うぬぁああ。試してから返事する予定でしたが、先に。

ヴァリウム男爵さん、情報ありがとうございます。
試すのみ。


試したらエントリで返事をば。
機械忍者 | 2004/09/24 8:39 PM
コメントする









この記事のトラックバックURL
http://cyborgninja.jugem.cc/trackback/105
この記事に対するトラックバック
カテゴリリストは長くなると見づらかったので、適当な文字数だけ表示するように変更。...
長いタイトルをトリミングする | *vitalage*blog | 2004/08/24 9:41 PM
長すぎるタイトルをつけた場合にエントリ表示が2行になってしまったりしてせっかくの...
長すぎるタイトルをトリミング | milk & chocolate* | 2005/01/23 1:06 AM
このブログも、ときどきトラックバックを頂けるようになってきました。 ただ、積極的...
タイトルのトリミング | ♪ごきげんBLOG♪ | 2005/04/23 6:05 AM
管理者の承認待ちトラックバックです。
- | - | 2011/05/29 7:28 PM