記事本文
ナビゲーションに使えそうなテンプレートタグ
カテゴリー関連のタグを目的に応じてナビゲーション用として使えそうです。
総当りで試した方が良いのでしょうが、今回は私が使えそうだと思ったもののみ試してみました。
テンプレートタグの解説は、タグごとにマニュアルへのリンクを張っておきますので参照してください。
テスト環境
test01 というトップレベルカテゴリを作り、そのサブカテゴリに test02 、更にそのサブカテゴリに test03 というカテゴリを作成しました。
実際の URI としては、以下のようになります。
( テストで作成したので、実際にアクセスしても 404 Not Found になります。 )
- http://hxxk.jp/mt/test01/
- http://hxxk.jp/mt/test01/test02/
- http://hxxk.jp/mt/test01/test02/test03/
そして、カテゴリアーカイブに以下のような記述をして、各カテゴリ内でどのように反映されるかを試してみました。
<dl>
<dt>このカテゴリの位置は、 <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> です</dt>
<dd>このカテゴリの位置は、 <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> です</dd>
<dt><MTTopLevelParent>このカテゴリのトップレベルカテゴリは <MTCategoryLabel> です</MTTopLevelParent></dt>
<dd><MTTopLevelParent>このカテゴリのトップレベルカテゴリは <MTCategoryLabel> です</MTTopLevelParent></dd>
<dt><MTParentCategory>このカテゴリの親カテゴリは <MTCategoryLabel> です</MTParentCategory></dt>
<dd><MTParentCategory>このカテゴリの親カテゴリは <MTCategoryLabel> です</MTParentCategory></dd>
<dt><MTHasSubCategories>このカテゴリ以下にはまだサブカテゴリがあります</MTHasSubCategories></dt>
<dd><MTHasSubCategories>このカテゴリ以下にはまだサブカテゴリがあります</MTHasSubCategories></dd>
<dt><MTHasParentCategory>このカテゴリには親カテゴリ <MTParentCategory><MTCategoryLabel></MTParentCategory> が存在します</MTHasParentCategory></dt>
<dd><MTHasParentCategory>このカテゴリには親カテゴリ <MTParentCategory><MTCategoryLabel></MTParentCategory> が存在します</MTHasParentCategory></dd>
<dt><MTHasNoSubCategories>このカテゴリ以下にサブカテゴリはありません</MTHasNoSubCategories></dt>
<dd><MTHasNoSubCategories>このカテゴリ以下にサブカテゴリはありません</MTHasNoSubCategories></dd>
<dt><MTHasNoParentCategory>このカテゴリはトップレベルカテゴリです</MTHasNoParentCategory></dt>
<dd><MTHasNoParentCategory>このカテゴリはトップレベルカテゴリです</MTHasNoParentCategory></dd>
</dl>
dt 要素にテンプレートのソースコードを書いて、 dd 要素には実際にテンプレートタグを書いています。
カテゴリの階層に応じて、これが展開されます。
test01 カテゴリ
- このカテゴリの位置は、 <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> です
- このカテゴリの位置は、 test01 です
- <MTTopLevelParent>このカテゴリのトップレベルカテゴリは <MTCategoryLabel> です</MTTopLevelParent>
- ( 空白 )
- <MTParentCategory>このカテゴリの親カテゴリは <MTCategoryLabel> です</MTParentCategory>
- ( 空白 )
- <MTHasSubCategories>このカテゴリ以下にはまだサブカテゴリがあります</MTHasSubCategories>
- このカテゴリ以下にはまだサブカテゴリがあります
- <MTHasParentCategory>このカテゴリには親カテゴリ <MTParentCategory><MTCategoryLabel></MTParentCategory> が存在します</MTHasParentCategory>
- ( 空白 )
- <MTHasNoSubCategories>このカテゴリ以下にサブカテゴリはありません</MTHasNoSubCategories>
- ( 空白 )
- <MTHasNoParentCategory>このカテゴリはトップレベルカテゴリです</MTHasNoParentCategory>
- このカテゴリはトップレベルカテゴリです
test01 カテゴリはトップレベルカテゴリであるために、その条件にそぐわない部分 ( ( 空白 ) と書いてある部分 ) はナビゲーションが出現しません。
test02 カテゴリ
- このカテゴリの位置は、 <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> です
- このカテゴリの位置は、 test01/test02 です
- <MTTopLevelParent>このカテゴリのトップレベルカテゴリは <MTCategoryLabel> です</MTTopLevelParent>
- このカテゴリのトップレベルカテゴリは test01 です
- <MTParentCategory>このカテゴリの親カテゴリは <MTCategoryLabel> です</MTParentCategory>
- このカテゴリの親カテゴリは test01 です
- <MTHasSubCategories>このカテゴリ以下にはまだサブカテゴリがあります</MTHasSubCategories>
- このカテゴリ以下にはまだサブカテゴリがあります
- <MTHasParentCategory>このカテゴリには親カテゴリ <MTParentCategory><MTCategoryLabel></MTParentCategory> が存在します</MTHasParentCategory>
- このカテゴリには親カテゴリ test01 が存在します
- <MTHasNoSubCategories>このカテゴリ以下にサブカテゴリはありません</MTHasNoSubCategories>
- ( 空白 )
- <MTHasNoParentCategory>このカテゴリはトップレベルカテゴリです</MTHasNoParentCategory>
- ( 空白 )
test02 カテゴリは親カテゴリを持ち、なおかつサブカテゴリも持っているため、最後の 2 つだけはナビゲーションが出現しません。
test03 カテゴリ
- このカテゴリの位置は、 <MTParentCategories glue="/"><MTCategoryLabel dirify="1"></MTParentCategories> です
- このカテゴリの位置は、 test01/test02/test03 です
- <MTTopLevelParent>このカテゴリのトップレベルカテゴリは <MTCategoryLabel> です</MTTopLevelParent>
- このカテゴリのトップレベルカテゴリは test01 です
- <MTParentCategory>このカテゴリの親カテゴリは <MTCategoryLabel> です</MTParentCategory>
- このカテゴリの親カテゴリは test02 です
- <MTHasSubCategories>このカテゴリ以下にはまだサブカテゴリがあります</MTHasSubCategories>
- ( 空白 )
- <MTHasParentCategory>このカテゴリには親カテゴリ <MTParentCategory><MTCategoryLabel></MTParentCategory> が存在します</MTHasParentCategory>
- このカテゴリには親カテゴリ test02 が存在します
- <MTHasNoSubCategories>このカテゴリ以下にサブカテゴリはありません</MTHasNoSubCategories>
- このカテゴリ以下にサブカテゴリはありません
- <MTHasNoParentCategory>このカテゴリはトップレベルカテゴリです</MTHasNoParentCategory>
- ( 空白 )
test03 カテゴリは親カテゴリを持ち、かつサブカテゴリは持っていないために、その条件にそぐわない部分 ( ( 空白 ) と書いてある部分 ) はナビゲーションが出現しません。
まとめ
まあ、まとめと言うほどのことでもないんですけど、マニュアルにテンプレートタグの実用例がなかったので、テスト結果をメモしておかないとテンプレートをカスタマイズできないのでこうして残しておく次第です。
この場合はナビゲーションを目的として書いていますけど、それ以外の用途にも使えると思います。
リプライ
7 件のリプライが送られています。
この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。
- 2005-03-13T01:06+09:00 - ruere
-
初めまして。ruereと申します。上記のテストについて、質問があります。
カテゴリ名に全角文字が含まれていると、その部分が表示されないのです。
例えば「01カテゴリ」というカテゴリの場合、表示されるのは「01」の部分だけになってしまいます。
これは何が原因なのでしょうか? 3.15xのバクでしょうか^^;
環境を書きます。
Movable Type 3.151-ja
データベース MySQL
文字コード UTF-8
サーバー sakura
よろしくお願いしますm(_ _)m
- 2005-03-13T18:29+09:00 - 真琴
-
あ。 ( 何かに気付いたフリ )
この例だと dirify="1" を使う必要はないですね……。
dirify というのは <a href="http://movabletype.jp/manual/mtmanual_tags.html#item_dirify">http://movabletype.jp/manual/mtmanual_tags.html#item_dirify</a> で示されているような属性で、主に URI などの全角文字が入っては困る部分に使います。よって、カテゴリ名を示す場合には使わなくてよかったのです。
本文を修正しておきます。気付かせて下さってありがとうございました。
- 2005-03-13T19:32+09:00 - No beer, No Name!
-
お返事ありがとうございますm(_ _)m
dirify="1" を外したらバッチリできました。
ほんとに助かりました。ありがとございましたm(_ _)m
- 2005-12-07T23:01+09:00 - 親カテゴリとサブカテゴリ < CoCoBlog
-
まだ研究内容という成果は出せてはない。 今日は、「カテゴリアーカイブ」をちょっと...
- 2005-12-07T23:08+09:00 - 親カテゴリとサブカテゴリ < CoCoBlog
-
まだ研究内容という成果は出せてはない。 今日は、「カテゴリアーカイブ」をちょっと...
- 2006-05-08T22:14+09:00 - タケシ
-
参考にさせていただいてます。
モジュールから読み込もうと
以下の内容でモジュール作成し<MTParentCategories glue=">">
<a href=">MTSubCategoryPath>"<>MTCategoryLabel dirify="1"><></a>
</MTParentCategories>
再構築しようとすると、<MTCategories>コンテナ内で使用してください。とエラーになり再構築できないのですが
解決策がありましたら、ご教授願います。
- 2006-05-10T00:52+09:00 - 真琴
-
MTParentCategories コンテナタグで括れば、 MTCategories コンテナタグ内で使えるテンプレートタグは使えるはず…… ( カテゴリ自体を最近は使っていないので自信がありませんが。 )
モジュールに記述したテンプレートタグの該当部分を、カテゴリアーカイブに書いてみてください。もしそれでも同じエラーが出るようであれば、テンプレートタグの入れ子の関係がおかしくなっている可能性があるかもしれません。