アルファサード株式会社 代表取締役 野田 純生のブログ


MTのカテゴリーアーカイブのパスを得る。


公開日 : 2007-04-03 01:09:34


カテゴリーアーカイブのパスを得る方法がどうにもわからなくて、これまでこんな風に書いていたのだが、カテゴリーアーカイブの公開の設定(つまりTemplateMap)がどうなっているか決め打ちできないから汎用性が無いよなぁ...って...

my $cat_pth = &get_cat_arc($category, $blog_url, '/', 'index.html');
sub get_cat_arc {
	my ($cat, $blog_base, $separator, $file_pth) = @_;
	my $str = $cat->basename;
	my $parent = $cat->parent;
	while ($parent != 0) {
		my $category = MT::Category->load({
		id=>$parent});
		$str = $category->basename.$separator.$str;
		$parent = $category->parent;
	}
	return $blog_base.$str.$file_pth;
}

lib::MT::Category.pmにあるじゃねぇか!

sub category_path {
    my $cat = shift;
    return $cat->{__path} if exists $cat->{__path};
    my $result = $cat->basename;
    do {
        $cat = $cat->parent ? __PACKAGE__->load($cat->parent) : undef;
        $result = join "/", $cat->basename, $result if $cat;
    } while ($cat);
    # caching this information may be problematic IF
    # parent category basenames are changed.
    $cat->{__path} = $result;
}

ちゃんとキャッシュもしてるみたいだし。
やっぱり、ちゃんとドキュメント整備しようよ。これじゃやっぱり「ハック」の領域だよ。

まぁいいや、これでタスクリストのいくつかが潰れた。

カテゴリ


このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の代表取締役社長であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ