« 日記 |Main| Applet作成 »

« MTに「リンクを張るためのタグをクリップボードに入れるボタン」を追加 | MTHack | MovableTypeで箇条書きを楽に入力するプラグイン »

カテゴリの説明がないときはラベルを表示するMovableTypeプラグイン

MovableTypeで「GRINEdit」カテゴリの下に「開発日誌(log)」というサブカテゴリを作ると、URLは「http://www.nishiohirokazu.org/blog/projects/grinedit/log/」になっていい感じだけど上のナビゲータに「開発日誌(log)」とだけ出るのでGRINEditの開発日誌だと言うことが伝わりません。ラベルを「GRINEdit開発日誌(log)」に変えて満足していたらURLも「http://www.nishiohirokazu.org/blog/projects/grinedit/grineditlog/」に変わってリンク切れ(正確に言うと更新されない残骸へのリンク)になってしまいました。勝手にURL変わらないで欲しいです。そこで、「カテゴリの説明があれば(そして空白文字列でなければ)それを表示し、なければカテゴリのラベルを表示する」というタグを作って、ラベルにはURLに入れたい文字列を使い、説明文に表示したい文字列を入れようと思いました。が、説明文をつけてもラベルしか表示してくれません…何がいけないのやら。

結局、文字列を != で比較したのがいけなかったようです。うまく動くようになった修正版に差し替えておきます。

MT::Template::Context->add_tag(CategoryDescOrLabel => sub {
    my ($ctx, $args) = @_;
    my $e = $ctx->stash('entry');
    my $cat = ($ctx->stash('category')
        || $ctx->stash('archive_category'))
        || ($e && $e->category)
        or return (defined($args->{default}) ? $args->{default} : 
                    $ctx->error(MT->translate(
                           "You used an [_1] tag outside of the proper context.",
                           '<$MTCategoryDescOrName$>' )));
    
    $cat->description || $cat->label;
});


トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/79

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.