2005年5月13日

MTEntryCategoryID。

こんなバタバタしてる時に限って、
何か思いついたりするもんで。

一昨日学校帰りに思いついた事を
実行してみたんですが。

Movable Type のタグって
なんやよう理解しきれてないのが本音で、
プラグイン使うべきなんか、
それともタグだけで処理できるのか
わからん事が多いんですが(^^;

一見簡単そうな事なんだけど、
テンプレート「Main Index」の「Recent Entries」ん所で
<$MTEntries$> で囲った範囲内に
カテゴリー番号を表示させる事が出来なくて困った次第。

普通はカテゴリーラベル、
つまり <$MTEntryCategory$> を使って
カテゴリー名を表示させたりして、
カテゴリー毎に違うアイコン貼ったり出来る訳ですが。

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

でも、私はうっかり、
カテゴリー名に日本語を使ってしまったんで
上記のimgタグに対応させるには、
ドイツ.gif とか、日常.gif とかってファイルを用意せなアカン訳。

とは言え、ファイル名に日本語を使うには
いや~な感じなんで、それは避けたい。

そこで、カテゴリー名ではなくて、
カテゴリー番号を表示させる事が出来れば、
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">

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


かくして、「最近の日記」のところに
カテゴリー別で余計なアイコンを表示してみました(^^;

…とか作業しといて、後からきっと
別のもっと賢い方法が見つかるんだろうなぁ(笑)

Posted by anigon at 03:07 AM

「気合で採血4。」へ戻る | 「へとへと英会話。」へ進む

上へ戻る