カテゴリの説明がないときはラベルを表示する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;
});