2005年9月19日
Movable Type のカテゴリーリストの表示が消える
久々に、Movable Type ネタ。 Movable Typeについてご質問を受けた。その内容はMovable Typeにて、カテゴリーのリストを画面の横に表示している。 トップページでの表示は問題ないが、個別のカテゴリーページに行くと カテゴリーリストの内容が表示されなくなってしまう。 カテゴリーリスト表示部分はモジュールとして共通化しており、 トップページからも、他のページからも 同様にインクルードしているので、まったく同じものが 表示されるはずなのだが...というご質問。 例えば、このブログ「シリコンバレー 24時」でも 同様のカテゴリーリストを画面の右側に表示している。
テンプレートの該当するモジュール部分を拝見すると、 カテゴリーリストの表示部分が
<MTSubCategories>で挟んであった。 これは、Movable Typeのマニュアルに載っている例そのもので、 このように、それをそのままご利用になっておられる方も多いと思う。
カテゴリーを表示するためのスクリプト
</MTSubCategories>
実は、MTには カレント・カテゴリーみたいな考え方がある。 つまり「現在対象としているカテゴリー」が暗黙のうちに指定されている。 MTのトップページを表示している場合、カレント・カテゴリーもトップレベルとなり、 そのサブ・カテゴリーを表示するとなると結局、全てのカテゴリーが表示されることになる。 ところが、ある特定のカテゴリーのページへ移動すると、 カレント・カテゴリーも自動的にそのカテゴリーに指定されてしまい、 そこからのサブ・カテゴリーを表示するとなると、結果として何も表示されない、 もしくは、そのカテゴリーの下にカテゴリーがあった場合だけその分だけが表示される、 ということになる。 これはこれでこういう仕様なので、バグでもなんでもない、正常動作なのである。
ところが、Movable Typeをお使いの方の中には、 今回のご質問の方と同様、どのページからでも全てのカテゴリーのリストを表示させたい、 とお考えの方もおられると思う。 さて、そういう場合はどうしたらよいか。 そこはさすが、Movable Type。解決策が用意してある。 結論としては、上記のテンプレートタグ「<MTSubCategories>」を 「<MTTopLevelCategories>」に変更すればよい。 具体的には、
<MTTopLevelCategories>てな感じ。 これで、どのカテゴリーに居ても全てのカテゴリーのリストを表示できるようになる。
カテゴリーを表示するためのスクリプト
</MTTopLevelCategories>
カテゴリー: MTカテゴリー , MTテンプレートタグ 22:26 | コメント (0) | トラックバック (0)
2005年5月24日
Movable Typeのアーカイブ(4) 「週別アーカイブ」
前回の『Movable Typeのアーカイブ(3) 「アーカイブ・ファイルのテンプレート」』の続きとして、「週別アーカイブ」を取り上げてみる。
週別アーカイブは、Movable Type に準備はされているものの、デフォルトで有効化もされておらず、また、有効化しても、そこに対するリンクをどうやって張るか、という問題もある。そこで、このブログ「シリコンバレー24時」の例を紹介する。
このブログにおける 週別アーカイブ の「アーカイブ・ファイルのテンプレート」欄は、
<$MTArchiveDate format="%Y/%m/week%d"$>.htmlとしている。 これで「西暦4桁/月2桁/week 日2桁 .html」の週別アーカイブができる。 ちょっとわかりにくいので例を挙げることにする。 例えばこのエントリーは、2005年05月24日のエントリーである。 この05月24日が含まれる週が開始される最初の日(日曜日)は05月22日である。 よって、この05月24日のエントリーが含まれる週別アーカイブは、
.../arch/2005/05/week22.html
となる。
では、この週別アーカイブに対するリンクを張るためにどうしたか、というと、「週間アーカイブ一覧」というページが自動的に構築されるようにテンプレートを作った。 また、その「週間アーカイブ一覧」へのリンクとして、画面右側の「アーカイブ」欄から、その「週間アーカイブ一覧」へのリンクを作った。 このブログでは、画面右側は全ページ共通としているので、どのページからも「週間アーカイブ一覧」にアクセスできることになる。
「週間アーカイブ一覧」や、そこへリンクするためのテンプレートでの記述については別ブログで説明することにする。
カテゴリー: MTアーカイブ , MTテンプレートタグ 14:31 | コメント (0) | トラックバック (0)
2005年5月23日
Movable Typeのアーカイブ(3) 「アーカイブ・ファイルのテンプレート」
管理画面、「設定>アーカイブの設定」ページの「アーカイブ」セクションに「アーカイブ・ファイルのテンプレート」という欄がある。 デフォルトでは全て空白になっている。この欄が何を設定するためのものなのか、疑問に思った方も多いのではないだろうか。実を言うとこの私も、先日までこの欄の使い方がわかっていなかった。
まず、画面の説明を読んでみると、「アーカイブのテンプレート毎に、出力パス名をカスタマイズしてください。」 とある。 これだけでは、まだよくわからないので、付属のヘルプ画面、もしくは、Movable Typeのオンライン・マニュアルのアーカイブの設定 を見てみる。 結局の話し、ここに書いてある事が理解できれば、この「アーカイブ・ファイルのテンプレート」欄を使いこなすことができるわけである。
また、別の解説として、「各種アーカイブファイルを効率的に構築する」に図入りで丁寧に解説してあるので、非常に参考になると思う。
既にマニュアルや良い解説ブログがあるので、ここでは、このブログ「シリコンバレー24時」で使っている「アーカイブ・ファイルのテンプレート」欄の設定例をいくつかご紹介しよう。
「個別アーカイブ」
以前のブログ『Movable Type のカテゴリー(8) 「同一ディレクトリ名問題」』ではカテゴリー名について触れたが、個別アーカイブのファイル名での同様な問題が起きる可能性がある。そのため、個別アーカイブの「アーカイブ・ファイルのテンプレート」欄もデフォルトから変更してしまった。具体的には、
<$MTArchiveDate format="%Y/%m/%d/"$><$MTEntryID pad="1"$>.htmlとしている。これで「西暦4桁/月2桁/日2桁 のディレクトリの下に、エントリー毎にユニークな番号6桁のファイル名 + .html 」のアーカイブができる。
例えば、このエントリーであれば、
.../arch/2005/05/23/000048.html
という事である。
「日別アーカイブ」
日別アーカイブの「アーカイブ・ファイルのテンプレート」欄は、
<$MTArchiveDate format="%Y/%m/%d/"$>index.htmlとしている。 これで「西暦4桁/月2桁/日2桁 のディレクトリの下に、index.html」の日別アーカイブができる。
例えば、このエントリーであれば、
.../arch/2005/05/23/index.html
という日別アーカイブに含まれることになる。
カテゴリー: MTアーカイブ , MTテンプレートタグ 10:20 | コメント (0) | トラックバック (0)
2005年5月18日
Movable Type のテンプレートタグ (1) 「dirify」
先日の『Movable Type のカテゴリー(8) 「同一ディレクトリ名問題」』に関連する記述をマニュアルの中に見つけたので、今回はそれについて。
テンプレート・タグのタグ・アトリビュートとして、「dirify」というものがある。詳しくは、マニュアルを見ていただければわかることだが、少し引用させていただくと、
dirifyを 1 を設定すると、タグを「dirify」します。すなわち、タグの値を、ファイル名や検索用に合わせたものに変換します。値は、小文字(abc...)に変換され、HTMLのタグやエンティティは除去され、普通でない文字 (アルファベット、数字、アンダースコア (_)、空白以外の文字) は除去され、空白はアンダースコア (_) に変換されます。
とあり、また、補足として、
(訳注: 日本語は dirify によってすべて除去されてしまいます)
とある。
このことから、Movable Type では、エントリーのファイル名や、カテゴリーのディレクトリ名にこの規則が適用されているということがわかる。やはり、先日のブログで指摘したとおり、エントリーやカテゴリーのタイトルにおいて、「英語と日本語が混在し、かつ、日本語部分のみが異なる場合、それぞれを識別できなくなってしまう」という問題が起こるわけだ。
カテゴリー: MTカテゴリー , MTテンプレートタグ 02:09 | コメント (0) | トラックバック (0)
2005年5月13日
Movable Type のテンプレート・スタイルについて(5) 「テンプレート・モジュール」編
Movable Typeの管理画面のテンプレート・ページは大きく4つのセクションに分かれているが、その最後のセクションが「テンプレート・モジュール」のセクションである。
動作がわかりやすい、この「テンプレート・モジュール」についてまず調査してみる。
これは、共通して利用できるHTMLなどのコードをテンプレートとして抽出しておき、他のテンプレートに埋め込むことができる。
サイト全体で使うヘッダー部分に利用する場合等が典型例で、例えば、「Header」という新しいテンプレート・モジュールをあらかじめ作成ておき、本体となるインデックス・テンプレートやアーカイブ・テンプレートの中で、
<$MTInclude module="Header"$>
というような記述をすると、その部分を「Header」テンプレート・モジュールに置き換えることができる。
この「テンプレート・モジュール」は、非常に便利であり、すでにこのブログでもよく使っている。
カテゴリー: MTテンプレート , MTテンプレートタグ 03:03 | コメント (0) | トラックバック (0)