frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

MTEntryCategoryID。

こんなバタバタしてる時に限って、

何か思いついたりするもんで。

一昨日学校帰りに思いついた事を

実行してみたんですが。

Movable Type のタグって

なんやよう理解しきれてないのが本音で、

プラグイン使うべきなんか、

それともタグだけで処理できるのか

わからん事が多いんですが(^^;

一見簡単そうな事なんだけど、

テンプレート「Main Index」の「Recent Entries」ん所で

<$MTEntries$> で囲った範囲内に

カテゴリー番号を表示させる事が出来なくて困った次第。

普通はカテゴリーラベル、

つまり <$MTEntryCategory$> を使って

カテゴリー名を表示させたりして、

カテゴリー毎に違うアイコン貼ったり出来る訳ですが。

例えば、<img src="<$MTEntryCategory$>.gif"> とかってね。

でも、私はうっかり、

カテゴリー名に日本語を使ってしまったんで

上記のimgタグに対応させるには、

ドイツ.gif とか、日常.gif とかってファイルを用意せなアカン訳。

とは言え、ファイル名に日本語を使うには

いや___DASH___な感じなんで、それは避けたい。

そこで、カテゴリー名ではなくて、

カテゴリー番号を表示させる事が出来れば、

1.gif とか、2.gif って画像ファイルで対応出来るんじゃない?

…と思ったものの、

どうもカテゴリー番号を表示させるべく

<$MTCategoryID$> タグは

<$MTEntries$> 範囲内では使おうとすると

エラーが表示される。んあー。

って、訳でまたまた面倒になった私は

Movable Typeperlスクリプト自体をいじくる事に(^^;

書き足したのは 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">

…などと書いてみました。

かくして、「最近の日記」のところに

カテゴリー別で余計なアイコンを表示してみました(^^;

…とか作業しといて、後からきっと

別のもっと賢い方法が見つかるんだろうなぁ(笑)