« MovableTypeのプレビュー機能を改良するStylePreviewプラグイン(改良)。 | メイン | 日本社会で起業するために実は必要でないもの, あるいは邪魔なもの。 »

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

カテゴリーアーカイブのパスを得る方法がどうにもわからなくて、これまでこんな風に書いていたのだが、カテゴリーアーカイブの公開の設定(つまり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;
}

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

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

カテゴリー: MovableType

トラックバック

トップページ | アーカイブ(このブログの全てのエントリーの一覧)

About

2007年04月03日 01:09に投稿されたエントリーのページです。

ひとつ前の投稿は「MovableTypeのプレビュー機能を改良するStylePreviewプラグイン(改良)。」です。

次の投稿は「日本社会で起業するために実は必要でないもの, あるいは邪魔なもの。」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

広告

Powered by
Movable Type 3.34

最近のエントリー

このブログのフィードを取得
[フィードとは]