Movable Typeでカテゴリ毎の表示内容を変える方法

Movable Typeでカテゴリ毎の表示内容を変える方法をメモっておく。

Movable Type では、共通のテンプレートを使用して各カテゴリページを作成している。同じように表示したい場合には、それでも良いが、特定のカテゴリについては異なる表示方法にしたい場合には少しばかり細工が必要である。

カテゴリ毎に異なるように表示させるには、私が思いつく限り、以下の3つの方法がある。

  1. 「カテゴリの説明」部分の利用
    異なる広告を表示する程度には使える。あまり複雑なことなできない。
  2. カテゴリ毎に新しいブログを作る
    いろいろと高度なことはできるが、初期設定が面倒である。
  3. インデックステンプレートを追加する
    カスタマイズ性も高く、上の「2」よりも手間はかからない。ただし、いくつかの前提条件がある。

ここでは、私がオススメする「3.インデックステンプレートを追加する」について述べる。実際に、私もこの方法で他のブログサイトを運営している。ここも、記事が増えて来たら、導入する予定である。

手順

まず、この方法は、Webサーバの次のような機能を利用している。

Webサーバは、ディレクトリ指定でアクセスがあった場合に表示するファイルの優先順位があらかじめ決められている。例えば、index.htmlindex.htm という2つのファイルがあった場合に、index.html が優先して表示する、などである。

具体的な手順は以下の通りである。

  1. アーカイブマッピングの設定
    「公開の設定」画面で、カテゴリアーカイブの出力フォーマットを表示優先順位の低い拡張子を持つindex.***ファイルにする。なお、どの拡張子が優先順位が低いかはWebサーバの設定に依存する。
    アーカイブマッピングの設定
  2. 各テンプレートにおけるカテゴリページへのリンクの修正
    index.*** が含まれないように指定する。通常は、MTCategoryArchiveLink を指定するが、これでは、index.*** まで含まれてしまう。index.*** を除去するには、アーカイブマッピングの設定で指定したフォーマットを参考に指定する必要がある。
    上記の例では、カテゴリアーカイブの出力フォーマットを
    <$MTArchiveCategory dirify="1"$>/index.shtml
    と指定しているが、この場合には、カテゴリページへのリンクは以下のように指定すればよい。
    <$MTBlogURL$><$MTCategoryLabel$>/
    アーカイブマッピングの設定によっては、MTタグで記述できない場合がある。MTタグで記述できるように、カテゴリアーカイブの出力フォーマットを指定する必要がある。(ページ下の補足を参照。裏技?)
  3. カテゴリ毎のテンプレートを作成する
    「インデックステンプレート」でテンプレートを新規に作成する。「出力ファイル名」を上記の出力フォーマットに従い、拡張子を表示の優先順位の高い拡張子に置き換える。タグは使えないので、直接カテゴリ名などを指定する。
    テンプレート作成
    あとは、「テンプレートの内容」を自分好みに作成すればよい。

以上の設定で、デフォルトでは「カテゴリアーカイブ」のテンプレートを用いて作成されたページが表示され、上述の手順により、作成した個別のカテゴリページがあれば、そのページが表示される。

補足

どうしてもMTCategoryArchiveLinkでカテゴリページへのリンクを指定した場合には、あまりオススメできる方法ではないが、以下のような方法もある。

それは、上記の「3.カテゴリ毎のテンプレートを作成する」際に「出力ファイル名」にMTCategoryArchiveLinkで指定されるファイル名を直接指定するという方法である。(ファイル名を指定する際には相対パスで良いので、http:// などは削除すること)

ただし、この方法は、カテゴリテンプレートを用いて作成したページを上書きするため、注意が必要である。ページを表示して見て、カテゴリテンプレートの方が適用されていれば、個別のカテゴリテンプレートを別途再構築する必要がある。

トラックバック(0)

このブログ記事に対するトラックバックURL: http://itsmemo.com/mt/mt-tb.cgi/33

※スパム防止のため、管理人がトラックバック内容確認後、公開されます。

コメントする