日本語対応トリミングフィルタ(再度バグ修正)
kubotさんより、utf-8からeuc変換前に文字数を判断してしまうと、3バイトコードがあるときに希望する文字数を得られないのではないか、というご指摘を受けました。確かにそのとおりですね。kubotさん、ありがとうございました。
というわけで、修正したコード(ほぼ、kubotさんがコメントに書いてくださったコードそのままですが・・・)を載せておきます。以前のエントリーのソースは自戒の念を込め、追記のみでそのままにしておきます。
2004/3/29追記:このスクリプトはmuraさんの記事(M’s folder: MT 長いタイトルをトリミングする)で公開されているものをEUC以外の文字コードに対応するように改変したものです。
2005/9/30追記:Encodeモジュール版はこちら。
# 指定された文字数(半角文字数)にトリミングするフィルタ
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/x8ExA1-xFE// % 2) {
chop $out;
if($out =~ /x8F$/){
chop $out;
}
}
$out .= $sippo;
# 尻尾を付けたくない場合は、コメントアウトのこと。
if ($conv_in ne 'euc') {
&$jcnv($out, $conv_in, 'euc');
}
return $out;
});
1;
3月 25th, 2004 at 18:54:09
memo link
辞書 R.K’s Linux Homepage / 翻訳ソフト、辞書 — 2004-01-23 (Fri) 10:24:56 辞典&辞書検索 翻訳のためのインターネットリソース ( Index ) — 2004-01-23 (Fri) 10:25:44 Syslog ログローテートツ
4月 2nd, 2004 at 11:19:13
長いタイトルをトリミングする
以前しようと思っていてすっかり忘れていたタイトルのトリミングをしました。 具体的には、右リンク部分の最近のコメントとトラックバック部分、IndividualArchiveとMonthlyArchiveの前後のエ
4月 8th, 2004 at 6:28:20
「10日でおぼえるPHP入門教室」書籍について
書こうと思ってたら上記をご覧の通り、エントリータイトルがやたら長い(^^;;最新記事としてトップページに表示されてる分には特に問題ないんだけど、サイドメニューに「最近のエントリー」っていうのがあって、そこは限られたスペースしかなくて、こういう長いタイト…
5月 23rd, 2004 at 17:11:19
マルチバイトな文字列を切り詰める
MTのtrim_toフィルタでマルチバイト文字の途中で切られてしまうのを直す
6月 5th, 2004 at 3:33:27
トリミングプラグインを改造してみる
人生迷い箸さんのところにある日本語対応トリミングフィルタは便利なんだけど、プロポーショナルフォントだと幅=文字数ではないのでTrimする幅を決めにくかったりする。 そこで文字種から大雑把な幅を算出して一定の幅でTrimするように書き直してみた。 名付けてmt-trimj2…
6月 10th, 2004 at 0:21:31
長いタイトルを短く表示
長いタイトルをサイドのメニューに表示すると、2段になってレイアウトが崩れてしまいます。 そんなときは、trim_toを使って、指定文字数分だけ表示すればいい! …はずなのですが、MovableTypeは舶来品なので、2バイト文字コードである日本語のことなんか、当然ながら考…
6月 26th, 2004 at 11:34:31
Movable Type Memo Vol.6
・mt-trimj.pl Cube さんに教えてもらい 長いタイトルをトリミング。 Melmoのエントリーは 成功! Cube さんありがとう!!でも RSSFeed は。。。 挿入したタグがおかしいのかな? 参照サイト:人生迷い箸 フィルタって自分でつくることもあるのよね。いつもダウ…
6月 27th, 2004 at 15:41:42
文字のトリミング
「ちょっと前に書いたもの」のところに、エントリのタイトルと本文をちょこっとだけ表示させたかったので、久々に込み入ったカスタマイズ(私にとって!)。何か思い通りにいかんなぁ…と思ったら、私、エントリの最初にリンクタグ使ってるからなのね。 こちらのエントリ…
7月 4th, 2004 at 14:41:38
サイドバーのタイトルをトリミングする
7月 25th, 2004 at 14:47:46
長いタイトルをトリミングする
カテゴリリストは長くなると見づらかったので、適当な文字数だけ表示するように変更。…
9月 12th, 2004 at 9:26:59
管理人様 はじめまして。
最近MTでサイトを作り始めた、おーふちといいます。
トップページに自分の作った複数のBLOGコンテンツの
先頭部分だけをRSSでリンクする方法を探していて
こちらのページにたどり着きました。
まさしく探していた情報だ!
しかし、悲しいかな、サイト構築歴1ヶ月の私には
このスクリプトをどのように使ったら(組み込んだら?)
良いのか、さっぱり????でした。
大変恐縮ですが、このあたり教えていただけると助かり
ます。
9月 12th, 2004 at 16:59:46
おーふちさん、はじめまして。
このスクリプトは、MTのプラグインとなっています。次のように設置、利用します。
(1)
ソースコードを、テキストエディタなどを使ってPCに保存します。ファイル名は、たとえばmt-trimj.plとします。ただし保存するときの文字コードはEUCにしてしてください。(複数の文字コードが扱えるエディタを利用するのが良いと思います)
(2)
FTPなどで、「(MTのディレクトリ)/plugins/」に、(1)で保存したファイルをアップロードします。
(3)
MTのテンプレート上で、たとえばとすればエントリのタイトルが表現されますが、これに「trimj_to=”xx”」というパラメータを追加すれば、このプラグイン機能が利用できます。「xx」には、最大文字数を入れてください。仮にとすれば、表題が20文字まで表示され、それ以降はトリムされて表示しません。デフォルトでは、トリムした場合末尾に「…」が付きます。
こんな説明でよろしいでしょうか?
ちなみにRSSを表示する(リンクする)との事ですが、その際別途RSS表示用のプラグインを利用されるのだとすると、その出力内容にこのプラグインが適用できるのかどうかはわかりません。
9月 16th, 2004 at 0:49:08
ヴァリウム男爵 さま
ご指南、ありがとうございます。
チャレンジしてみます。
おーふち
9月 19th, 2004 at 12:18:15
先日、ご指南いただいたおーふちです。
RSSには、RSS-JPを利用させてもらって、TitleだけでなくEntryもうまく表示されています。
ありがとうございました。
近々HP完成の折には、このEntryにリンクさせていただきたく。
本当にありがとうございます。
9月 19th, 2004 at 15:33:02
おーふちさん、こんにちは
>RSSには、RSS-JPを利用させてもらって、Titleだけでなく
>Entryもうまく表示されています。
それはなによりです。:-)
9月 23rd, 2004 at 16:22:04
MT3.1でもエントリやタイトルに字数制限をかけて文字数を調整できる、その方法
エントリ書いたはいいがタイトルが長すぎたせいで、改行され、デザインが見るも無残な姿になって「あーんもぅっ!」と思わずイヤラシイ声を漏らしてしまったアータ!
文字数制限にLet\’s Try。
MovableType3.1の環境下でも試しましたのでほぼ問題ないと思います。
…
9月 24th, 2004 at 16:16:02
タイトル表示をトリミング
エントリーのタイトルがやたら長くなったりすることもたまにはあるわけでして、そう…
9月 29th, 2004 at 11:27:41
長いタイトルのトリミング
タイトルなんてその日の気分ですから。 何文字まで入るかとか、考えたくないデスヨネ。 なのでサイドバーと、Individualアーカイブの上部に出てくるメニュー…
10月 4th, 2004 at 23:00:49
Entryタイトルのトリミング
サイドメニューをすっきりと仕上げるために、PHPの関数を使ってエントリータイトルなどのトリミングをしていましたが、負荷を考えてリビルド時に行うことにした。
10月 9th, 2004 at 1:45:01
短い方がいいじゃない
DISC REVIEWとかでタイトルが長くなる事がよくありがち。って事で、最近の記事やコメントのトコの長いタイトルをトリミングさせてみました。 こちらのサイトさ…
10月 23rd, 2004 at 13:00:59
ゴッゴル絡みのトラックバックで思う事
ゴッゴル トラックバックについて考察するページです
10月 25th, 2004 at 21:02:40
Movable Type Memo Vol.6
・mt-trimj.pl Cube さんに教えてもらい 長いタイトルをトリミ…
11月 3rd, 2004 at 21:52:11
長くなってしまったタイトルをトリミングする方法(MT3.11)
設置前 設置後…
11月 10th, 2004 at 5:47:37
タイトル表示のトリミング
タイトルが長いと、サイドバーで表示された時に 自動で折れちゃったりしてせっかくの…
11月 23rd, 2004 at 13:03:19
MTの長いタイトルをトリミング
Movable Typeのエントリーに長いタイトルを付けてしまうことがよくありま…
12月 3rd, 2004 at 12:50:30
サイドバーすっきりさせよう!
サイドバーのRecent Commentsなどのタイトル文字が長くてレイアウトが崩れてしまうので、迷い箸さんのMovable Typeプラグイン「日本語対応トリ…
12月 7th, 2004 at 8:10:37
MTのうっとうしい長いタイトルをトリミングしてみるの巻
まだまだブログ自体を始めたばかりなので解らない事ばかりなのだが、とにかく新聞記…
12月 8th, 2004 at 13:02:17
こんにちは。
素晴らしいスクリプト、ありがとうございます!
導入させて頂いております。
ところで、私は>MTCommentBody<にこちらのプラグインを使わせて頂いているのですが、
remove_htmlと併用すると、
htmlタグがモロ見えになってしまいます。
例)こんにちは>br…
同じ状態になった方いらっしゃいませんか?
trim_toだとそうはならないんですが、
『シッポ』を使いたいので悩んでおります。。。
12月 8th, 2004 at 13:05:46
連投申し訳ない。
修正させて下さい。
>MTCommentBody<
→<MTCommentBody>
例)こんにちは>br…
→例)こんにちは<br…
です。
12月 8th, 2004 at 15:24:51
便利機能追加&プラグインに初チャレンジ
日本語対応トリミングフィルタ(プラグイン)実装。&「サイドバープルダウン化」「Permlinkを変更」「画像のUpload先を指定」等便利機能追加。
12月 8th, 2004 at 17:50:39
Hi:mAさんはじめまして。
私のところではうまく再現しないので憶測です。もし表示されてしまうのが<br>タグのだけで、「ブログの設定」でコメントのフォーマットが「Convert Line Breaks」(改行を変換する)になっているのであれば、「convert_breaks=”0″」 を併用してみたらどうなりますでしょうか?
12月 8th, 2004 at 22:25:33
>ヴァリウム男爵さま
早速のご回答ありがとうございました。
ご指摘のとおり、Convert Line…を有効にしており、
<MtCommentBody>内に
convert_breaks=”0″とtrimj_toを併用しましたところ、
<br>は見えなくなりました!
ありがとうございました。
蛇足ではあるのですが
remove_htmlも用いると、
アンカータグが見えてしまったり^^;
3つの併用は無理なんですかね。。。?
今回は誠にありがとうございました。
こちらのサイト、plug-in以外のものも
ちょくちょく覗かせて頂いてます。
これからも楽しみにしております。
それでは失礼いたします。
12月 8th, 2004 at 22:52:39
Hi:mAさま>3つの併用は無理なんですかね。。。?
デフォルト設定でのコンバートやサニタイズ、グローバルフィルタなどの内部での適用順とか、その辺が絡んでいるのかもしれませんね。MTのコードを追ってみれば良いんですが、なかなか暇もないので。(^^;
少なくとも私のサイトで公開しているコードに関しては、タグなどが含まれる場合にも途中でぶった切ってしまうので、その辺は運用上の注意が必要でしょう。
Hi:mAさんに限らず、EntryBodyやCommentBodyに利用する場合には、「convert_breaks=”0″」 を併用するのが吉だと思います。
Hi:mAさま>これからも楽しみにしております。
どうもありがとうございます。:)
12月 13th, 2004 at 16:07:52
MTカスタマイズ
ここで、カスタマイズでお世話になったblogをご紹介。 chiricoyet :…
12月 14th, 2004 at 23:09:42
プチリニュ
もう12月だっていうのにコスモスはないよなぁ…(汗) 気にはしてたのですが面倒臭くってやる気が起きなかった…orz 重い…
12月 19th, 2004 at 4:27:52
長~いタイトルなんかをトリミング
ちょっと前からやりたかったre-in-car-na-tionさんところのこれ、ようやくでけました。…
12月 21st, 2004 at 15:33:07
長いタイトルをトリミング
長いタイトルだとレイアウト的に微妙だったりとかするので導入してみました。 手順を…
1月 8th, 2005 at 21:33:17
最近のエントリーのツリー化
真希さんとこでエントリーのツリー化という記事がありまして。 「ほぉ。ツリー化かぁ…
1月 9th, 2005 at 14:14:52
長過ぎるタイトルもすっきり一行に
サイドバーの 最近のコメント、最近のトラックバック等で、タイトルが長過ぎて 折り…
1月 15th, 2005 at 21:49:21
色々と調整
レイアウトを中心に、細かいところを色々と修正した。 …
1月 22nd, 2005 at 3:00:56
最近のエントリーをツリー化してみる・・・の巻。
左サイドバーの”Recent Entries”にズラ〓っと並ぶエントリータイトル…
2月 9th, 2005 at 12:49:50
MTのうっとうしい長いタイトルをトリミングしてみるの巻
まだまだブログ自体を始めたばかりなので解らない事ばかりなのだが、とにかく新聞記…
2月 15th, 2005 at 14:31:22
はじめまして。
知り合いのブログから情報を頂き こちらのスクリプトをお借りしました。
見た感じも良くなってすっきりです。
ありがとうございます。
2月 15th, 2005 at 14:33:31
タイトルのトリミング
技の宝庫、mixi小粋ユーザーコミュ板で発見。 ちょっとばかり長いタイトルを付け…
2月 15th, 2005 at 14:46:51
miaowさん、はじめまして。
役立てて頂けたようで、なによりです。:)
2月 18th, 2005 at 0:43:29
最近導入したプラグイン
最近みなさまのblogで各要素のツリー化が大流行ですが、特に乗っかっていくつもりもなく、これもツリーっぽく見えるじゃん(…
2月 19th, 2005 at 2:04:25
トリミングプラグイン。
サイドバーの最近のトラックバックリストをツリー化に伴ってまとめたんですけど、どうもタイトルが途中で折り返されたりしてて、何だかごちゃごちゃし…
2月 22nd, 2005 at 1:05:37
トリミングプラグイン
前のブログの頃から、記事タイトルが長いとサイドバーの「Recent TrackBack」とかが複数行にまたがって表示され…
2月 22nd, 2005 at 14:56:44
MovableTypeのカスタマイズに奮闘…
MovableTypeでデザインと構成をカスタマイズするも… どうも僕です。 ど…
2月 26th, 2005 at 3:39:52
トリミングフィルタ プラングイン
両再度にエントリタイトルを表示していたが、長いタイトルの場合、改行されてしまい、…
3月 2nd, 2005 at 11:28:00
公開
ダウンロードできるようにしました。 色違いは後ほど。。 ソース見直し中ですが、よ…
3月 7th, 2005 at 22:08:17
長いタイトルをトリミング
サイドバーに表示する時タイトルが長いと折り返し表示されてしまい、なんとなく見栄え…
3月 8th, 2005 at 0:31:14
MTカスタマイズ: 長いタイトルをすっきり見やすく
実は、気になっていたこのカスタマイズ。 これでサイドバーが、変な風にズラズラダラ…
3月 20th, 2005 at 0:07:51
エントリータイトルが長い時に省略
エントリータイトルが長すぎると サイドカラムの横幅に入りきらずに、 折り返されて…
3月 24th, 2005 at 15:16:26
[カ]文字数削減。
MovableTypeのカスタマイズページを色々眺めつつ、『やりたかったこと。』…
4月 22nd, 2005 at 15:06:07
長いタイトルを省略して尻尾をつけたい衝動
ちょくちょくcssあたりは弄ってはいたものの、テンプレートは殆ど見ない・・・とい…
5月 1st, 2005 at 21:55:56
日本語をトリミング trimj_to
文字列の一部分を取り出すために trim_to というタグ属性がMTには用意され…
5月 3rd, 2005 at 14:00:18
トリミングプラグイン
長いエントリータイトルをつけると、サイドバーのトコの表示が途中で折り返…
5月 26th, 2005 at 1:23:15
続・トリミング
2005年4月23日の日記に、狭いサイドバーに何行にも渡るトラックバックタイトル…
6月 1st, 2005 at 2:45:46
長いタイトルをトリミングする
デザイン上、どうしても文字数を制限しないと美しくない場所がある。 そんな時文字数…
6月 12th, 2005 at 23:01:41
◎ MTカスタマイズ・メモ(mt-trimj プラグイン)
今回、MTに改めてテンプレートを入れ直して、カスタマイズする上で、このようにエン…
6月 12th, 2005 at 23:08:18
初めまして。
M’s folderさんからたどり着きました。
こちらのスクリプト、使わせて頂きました。
便利なもの、どうも有り難うございました。
6月 14th, 2005 at 18:20:06
わざわざこちらにコメントとスクリプト提示して頂いて
有り難うございました。ちと上手くいかなかったのは
残念ですけどね。いずれにせよ有用なTIPSを
有り難うございます。
6月 23rd, 2005 at 20:58:28
タイトルをトリミングする
タイトルをトリミングするプラグインの紹介。
6月 24th, 2005 at 18:37:34
長いエントリ名のトリミング
エントリ名が長くて折り返されると新しいエントリの表示部分が汚くなるのでなんとかトリミングのいい方法がないかと探してみた。MTタグのtrim_toだと後ろに「…..
7月 5th, 2005 at 15:36:29
トリミングプラグイン導入
ブログカスタムも最近楽しくて仕方がありませんw 今日は、少し時間が有ったので、ト…
7月 20th, 2005 at 23:27:48
recently_pinged_on Plugin を入れてみた。
こちらのプラグインを使って、”最近のトラックバック”のところを変えてみました。 …
7月 20th, 2005 at 23:27:50
サイドバーをすっきりさせよう!
サイドバーのRecent Commentsなどのタイトル文字が長くてレイアウトが崩れてしまうので、迷い箸さんのMovable Typeプラグイン「日本語対応トリ…
7月 25th, 2005 at 22:04:56
はじめまして。
フリーライターをしている藤本壱と申します。
現在、MTのカスタマイズに関する書籍を執筆しているところです。
その中で、こちらの「日本語対応トリミングフィルタ」をご紹介させていただきたく思います。
つきましては、紹介しても良いかをお知らせいただければと思います。
以上よろしくお願いいたします。
7月 26th, 2005 at 6:49:13
壱様、メールにて回答いたしましたのでよろしくお願いいたします。
8月 21st, 2005 at 13:55:57
タイトルの文字数制限をする
タイトルが長いと改行されてしまうので、文字数を制限しました。 ≫ 人生迷い箸 特…
9月 6th, 2005 at 23:39:03
■長いタイトルをトリミング
M’s folderさんのMT 長いタイトルをトリミングすると 人生迷い箸さんの…
9月 11th, 2005 at 21:20:04
最近のエントリーをトリミング
英語版に戻したと言う事で、最近のエントリーで利用している<$MTEntryExcerpt$>がまともに動作していない問題(英語版だからしょうがない)…
9月 16th, 2005 at 23:26:27
長いタイトルをトリミング:trimj_to
MT3.xxではデフォルトでtrim_toというアトリビュートが使えますが、これだと文末に「…」とかがつかなくて
9月 24th, 2005 at 14:50:56
トリミングプラグイン
テンプレートをお借りしています EGOISMさま では、一緒にタイトルトリミング…
9月 30th, 2005 at 23:05:03
日本語トリミングフィルタ(Encodeモジュール版)
以前は Jcode モジュールを利用してましたが、Encode モジュールに書き…
10月 15th, 2005 at 15:10:13
サイドバーの長いタイトルをトリミングする
よくみなさんのブログで見る、長すぎるタイトルを途中まで表示させていて、ある程度の文字数で … として省略しているのをよく見かけて羨ましく思っていましたが……
…
10月 24th, 2005 at 13:03:34
長いタイトルを省略
長くなったタイトルの文字数を制限して表示するためのプラグインを導入。
12月 4th, 2005 at 15:21:47
長いタイトルを指定した文字数にトリミングする
「最近のコメント」を表示する部分などにエントリーのタイトルを表示させているんです…
3月 22nd, 2006 at 15:03:57
月別アーカイブでカレンダー表示
久しぶりのMovable Typeのカスタマイズです。 最近、日付アーカイブのテ…
3月 29th, 2006 at 19:47:41
サイト内検索へのリンク
最近グルメのカテゴリーで同じお店のエントリーが増えてきたので、それらが簡単にたど…
3月 30th, 2006 at 12:55:50
文字列のトリミング
人生迷い箸さんで紹介されている日本語対応トリミングフィルタをこのサイトでも使わせ…
4月 12th, 2006 at 10:12:26
links for 2006-04-12
LA1.JP (tags: CSS movabletype web…
6月 13th, 2006 at 18:30:36
タイトル等の表示文字数を制限する
タイトル等の表示文字数を制限するMTプラグインを入れてみた。皆さんの環境でも上手く一行になっているでしょうか。
6月 25th, 2006 at 23:12:26
第12回:文字列の長いエントリーをトリミングする
第11回は、パンくずリストを設置する方法について説明しました。今回は、文字列の長…
7月 30th, 2006 at 23:44:11
MT3.3をインストールしてみました。
遅ればせながらMT3.3をインストールしてみました。 結構前にリリースされたのは…
10月 16th, 2006 at 0:09:03
タイトルをトリミングする
タイトルをトリミングするプラグインの紹介。
3月 22nd, 2007 at 14:43:47
syukoclipで使用したプラグイン
当サイト、syukoclipで使用したプラグインの一覧です。 …
9月 2nd, 2007 at 4:47:04
テンプレート MT.1 for Movable Type 4
こんにちわ^^ 先日、寝室のエアコンのリモコンが壊れてしまったため、ビックカメラで買ってきました。 本体はまだ使えそうなのに、リモコンが壊れた…