MTEntryCategoryID。
こんなバタバタしてる時に限って、
何か思いついたりするもんで。
一昨日学校帰りに思いついた事を
実行してみたんですが。
Movable Type のタグって
なんやよう理解しきれてないのが本音で、
プラグイン使うべきなんか、
それともタグだけで処理できるのか
わからん事が多いんですが(^^;
一見簡単そうな事なんだけど、
テンプレート「Main Index」の「Recent Entries」ん所で
<$MTEntries$> で囲った範囲内に
カテゴリー番号を表示させる事が出来なくて困った次第。
普通はカテゴリーラベル、
つまり <$MTEntryCategory$> を使って
カテゴリー名を表示させたりして、
カテゴリー毎に違うアイコン貼ったり出来る訳ですが。
例えば、<img src="<$MTEntryCategory$>.gif"> とかってね。
でも、私はうっかり、
カテゴリー名に日本語を使ってしまったんで
上記のimgタグに対応させるには、
ドイツ.gif とか、日常.gif とかってファイルを用意せなアカン訳。
とは言え、ファイル名に日本語を使うには
いや___DASH___な感じなんで、それは避けたい。
そこで、カテゴリー名ではなくて、
カテゴリー番号を表示させる事が出来れば、
1.gif とか、2.gif って画像ファイルで対応出来るんじゃない?
…と思ったものの、
どうもカテゴリー番号を表示させるべく
<$MTCategoryID$> タグは
<$MTEntries$> 範囲内では使おうとすると
エラーが表示される。んあー。
って、訳でまたまた面倒になった私は
Movable Type のperlスクリプト自体をいじくる事に(^^;
書き足したのは Movable Typeディレクトリ内の
lib/MT/Template/Context.pm の数行。
121行目
…の下に続けて…$ctx->register_handler(EntryCategory => \&_hdlr_entry_category);
…と書き足して、$ctx->register_handler(EntryCategoryID => \&_hdlr_entry_category_id);
さらに1101行目の _hdlr_entry_category 関数の下、
1108行目以降に…
sub _hdlr_entry_category_id {
my($ctx) = @_;
my $e = $ctx->stash('entry')
or return $ctx->_no_entry_error('MTEntryCategoryID');
my $cat = $e->category;
$cat ? $cat->id : '';
}
…と_hdlr_entry_category 関数をパクった関数を(^^;
追加して終了。
そしたら、さっきのテンプレート
「Main Index」の「Recent Entries」ん所で
<$MTEntries$> で囲った範囲内に
<$MTEntryCategoryID$> と書けば、
カテゴリー番号が表示されるようになりました(^^)
って訳で、めでたく希望通りに
カテゴリー毎に違った画像を表示できるようになったので…
<img src="images/<$MTEntryCategoryID$>.gif">
…などと書いてみました。
かくして、「最近の日記」のところに
カテゴリー別で余計なアイコンを表示してみました(^^;
…とか作業しといて、後からきっと
別のもっと賢い方法が見つかるんだろうなぁ(笑)