Movable Type 3.11 のサブカテゴリ機能についての所感 (4)

http://hxxk.jp/2004/10/24/0114

記事データ

投稿者

望月真琴

投稿日時

2004-10-24T01:14+09:00

タグ
概要

category/<$MTSubCategoryPath$>/index.html とアーカイブ・テンプレートのファイルに記述することによって、サブカテゴリの階層を保持したままディレクトリ構造を作ることができます。

リプライ

リプライはまだありません。

記事本文

カテゴリアーカイブのディレクトリ構造

Movable Type 3.11 にてサブカテゴリ機能というものが実装される前は、どのカテゴリにおいても全て同じレベルのカテゴリとして扱われていました。 すなわち、カテゴリアーカイブを置くディレクトリ以下に、全てのカテゴリアーカイブが並べられていたのです。 しかし、サブカテゴリと名がつくならば、親カテゴリより下位のディレクトリに置かれるのが自然だろうと思います。

Movable Type 3.11 のサブカテゴリ機能についての所感 (2) - MySQL 使用時におけるサブカテゴリの扱いにて用いたモデルを元に考えてみます。

従来のカテゴリアーカイブのディレクトリ構造

前項のモデルを、実際に Movable Type 3.0 以前のものでカテゴリの設定を行った場合の URI は以下のようになります。 なお、カテゴリアーカイブが置かれる URI は、ウェブログの設定アーカイブの設定にてアーカイブ・ファイルのテンプレートを設定することで変更できますが、この例では category/<$MTArchiveCategory dirify="1"$>/index.html と設定したとして進めていきます。

このように、元々トップレベルカテゴリの概念もサブカテゴリの概念もないため、 <$MTBlogArchiveURL$>category/ の直下に、全て同一レベルで配置されます。

サブカテゴリを含むカテゴリアーカイブのディレクトリ構造

次に、実際に Movable Type 3.11 でサブカテゴリの設定を行った場合の URI について考えてみます。 ウェブログの設定アーカイブの設定にてアーカイブ・ファイルのテンプレートの部分に何も設定をしなかった場合は以下のようになります。

サブカテゴリを含むカテゴリアーカイブのアーカイブ・ファイルのテンプレート

さて、前項のように、サブカテゴリのレベルに合わせてカテゴリアーカイブのディレクトリが作られました。 ただし、これはウェブログの設定アーカイブの設定にてアーカイブ・ファイルのテンプレートの部分に何も設定をしなかった場合の話です。

何も設定をしなかった場合は <$MTBlogArchiveURL$> の直下に配置されますが、設計段階で <$MTBlogArchiveURL$>category/<$MTCategoryLabel$> のように、カテゴリアーカイブは category/ 以下にまとめて、管理をスムーズに行いたいと思うことがあるかもしれません。

そういった時に今までと同様 category/<$MTArchiveCategory dirify="1"$>/index.htmlウェブログの設定アーカイブの設定にてアーカイブ・ファイルのテンプレートを設定した場合、トップレベルカテゴリとサブカテゴリの区別なく、 <$MTBlogArchiveURL$>category/<$MTCategoryLabel$> として一様に配置されてしまいます。

きちんとディレクトリ構造を持ったまま設定したい場合はどうすればいいのか。 ウェブログ設定ガイド - アーカイブの設定を一通り読んでもそういった記述は特に見当たりません。 そこで、テンプレート・ タグに似たような機能を持ったタグがないか、それによって代替できないかを探してみました。

MTSubCategoryPath

テンプレート・ タグ - MTSubCategoryPath というテンプレート・タグがあります。

MTSubCategoryPath

ショートカット・タグ(通常のタグ)。 以下のテンプレート・コードが使われているかのように戻ります。

<MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories>

この説明中にあるテンプレート・ タグ - MTParentCategories の解説を見てみると、

MTParentCategories

現在のカテゴリーの最上レベルの親から始まり、コンテナの各再帰で、現在のカテゴリーまでのパスまで続くコンテナ・タグ。

アトリビュート:

glue

リストをつなぎ合わせるテキスト

exclude_current

「1」を設定するとリストから現在のカテゴリーを除く

よって、今回のモデルにおける一番下位のレベルにある extension カテゴリを例にとって考えると、最上レベルの親 ( www カテゴリ ) から始まり、 internet → browser → firefox と続いて extension カテゴリまでつながります。 ( 各カテゴリは glue="/" の指定によって、 / で連結されます。 )

これより、 category/<$MTSubCategoryPath$>/index.html とアーカイブ・テンプレートのファイルに記述することによって、サブカテゴリの階層を保持したままディレクトリ構造を作ることができます。

なお、従来は category/<$MTArchiveCategory dirify="1"$>/index.html のように dirify 属性を使うことで、日本語や空白文字が含まれるカテゴリ名への対処を行っていましたが、 MTSubCategoryPath は <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> と同様のコードとなるため、 dirify="1" を改めて指定する必要はありません。

リプライ

リプライはまだ送られていないか、管理者の承認待ち状態です。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など