MTのアーカイブマッピングのカスタマイズ

MTの記事のパーマリンクの設定はいろいろできます。つまりアーカイブマッピングのカスタマイズはいろいろできます。
デフォルトで作成されているアーカイブマッピングは、
%y/%m/%-f → [年]/[月]/[記事名].html
ということになっていて、MT本来のブログ記事を書きます仕様になっています。
アーカイブマッピングの作り方の応用としては以下のようなこともできます。
%y/%m/%d/%-f.html → [年]/[月]/[日]/[記事名].html
%-c/%-f.html → [カテゴリー]/[記事名].html
%-c/%e.html → [カテゴリー]/[記事名].html
いろいろな設定が自由にできるので、%-c_%e/index.htmlとか何とか組み合わせてやったりといろいろできます。
このアーカイブマッピングに対応するMTタグもありますので、本家サイトのドキュメントを参照するとよいです。

アーカイブファイル名の定義
項目 同じ働きのテンプレートタグ 内容
%a <$mt:AuthorBasename$> 投稿者のユーザーベースネーム
%-a <$mt:AuthorBasename separator="-"$> 投稿者のユーザーベースネーム、区切りは -
%_a <$mt:AuthorBasename separator="_"$> 投稿者のユーザーベースネーム、区切りは _
%b <$mt:EntryBasename$> エントリーの出力ファイル名
%-b <$mt:EntryBasename separator="-"$> エントリーの出力ファイル名区切りは -
%_b <$mt:EntryBasename separator="_"$> エントリーの出力ファイル名、区切りが _
%c <$mt:SubCategoryPath$> サブカテゴリーのパス
%-c <$mt:SubCategoryPath separator="-"$> サブカテゴリーのパス、区切りが -
%_c <$mt:SubCategoryPath separator="_"$> サブカテゴリーのパス、区切りが _
%C <$mt:ArchiveCategory default=""$> 直属カテゴリー
%-C <$mt:ArchiveCategory dirify="-" default=""$> 直属カテゴリー、区切りが -
%d <$mt:ArchiveDate format="%d"$> エントリーの日付
%D <$mt:ArchiveDate format="%e"$> エントリーの日付
%e <$mt:EntryID pad="1"$> エントリー ID (桁数が6桁に満たないとき、0 で埋めて表示)
%E <$mt:EntryID pad="0"$> エントリー ID
%f <$mt:ArchiveFile$> アーカイブファイルの名前、拡張子 ([設定] $> [ブログの設定] $> [公開] $> [アーカイブの拡張子] で設定) を含む
%-f <$mt:ArchiveFile separator="-"$> アーカイブファイルの名前、拡張子 ([設定] $> [ブログの設定] $> [公開] $> [アーカイブの拡張子] で設定) を含む。区切りが -
%F <$mt:ArchiveFile extension="0"$> アーカイブファイルの名前、拡張子なし
%-F <$mt:ArchiveFile extension="0" separator="-"$> アーカイブファイルの名前、拡張子なし、区切りが -
%h <$mt:ArchiveDate format="%H"$> アーカイブページの最初の日付、時刻を24時間で表示
%H <$mt:ArchiveDate format="%k"$> アーカイブページの最初の日付、時刻を24時間で表示 (0〜9時は1桁)
%i <$mt:IndexBasename extension="1"$> メインページの名前、拡張子を含む
%I <$mt:IndexBasename$> メインページの名前
%j <$mt:ArchiveDate format="%j"$> アーカイブページの最初の日付、年初からの通し日数
%m <$mt:ArchiveDate format="%m"$> アーカイブページの最初の日付、月を2桁で表示
%n <$mt:ArchiveDate format="%M"$> アーカイブページの最初の日付、分を2桁で表示
%s <$mt:ArchiveDate format="%S"$> アーカイブページの最初の日付、秒を2桁で表示
%x <$mt:BlogFileExtension$> 各種アーカイブの拡張子
%y <$mt:ArchiveDate format="%Y"$> アーカイブページの最初の日付、年を4桁で表示
%Y <$mt:ArchiveDate format="%y"$> アーカイブページの最初の日付、年を2桁で表示

MTで月別アーカイブを複数作る

MovableTypeのお得意分野はアーカイブ化です。過去の記事をいろんな方法でカテゴライズしてアーカイブ化します。その中でも月別アーカイブはブログなどでまとめる場合にはごく頻繁に使う機能であるとともに、その用途も非常に多いです。
デフォルトの月別アーカイブは、/yyyy/mm/index.html(php)というようなフォーマットでリスト化されます。2012年9月12日の記事をリスト化して表示する場所(つまりアーカイブマッピング)は、<アクセス先URL>/ウェブサイト名/<ブログ名>/2012/09/index.htmlというパスになります。しかしデフォルトではブログ内の全記事をここに格納するということになっています。しかし、いろいろなカスタマイズをする中で、
ある指定カテゴリーの月別アーカイブがほしい。
カスタムフィールドの値がxxxになっている記事の月別アーカイブがほしい。
などなど、単数ないし複数の条件でフィルタリングした記事の月別アーカイブが必要となることがあると思います。このような場合には月別アーカイブを複数つくらなくてはなりません。

複数の月別アーカイブを出力する際の注意点
・アーカイブパス(アーカイブマッピング)をユニークなものにしなくてはならない。
これは当たり前で同じディレクトリとファイル名では上書きされてしまいます。ですからアーカイブパスはそれぞれユニークなものにします。
(例)
/<任意のカテゴリー名>/yyyy/mm/index.html
/yyyy/mm/<任意のカテゴリー名>.hrml
とか、
/<任意の番号>_yy/mm/index.hrml
とか、こういう感じです。
・カスタマイズした月別アーカイブでは、<$mt:ArchiveLink$>みたいなデフォルトのテンプレートタグが利用できなくなる。
(例)
1_%Y/%m/%i"(<任意の番号>_yy/mm/index.hrml)というフォーマットの仕方のブログ記事リストの場合は、
<$mt:FileTemplate format="1_%Y/%m/%i"$>
という感じでフォーマット文字を引数にしてパス(リンク)を生成します。<$mt:ArchiveLink$> の代用になります。また厳密にいえば、<$mt:ArchiveLink$>は優先アーカイブ設定中のアーカイブマッピングをパスにするということになります。
という感じでしょうか。

具体的なやり方

  1. 「デザイン」→「テンプレート」から、中ほどのアーカイブテンプレートのところで、ブログ記事リストを新規で作成します。
  2. 緑色の+ボタンで新規作成ができます。
  3. テンプレート名を適当なものにして(本当に適当でいいです)適当なテンプレートを書きます。
  4. テンプレートの書き方については割愛。
  5. テンプレートを保存すると、テンプレートの設定の中に新しくアーカイブマッピングを作成する欄がでてきます。
  6. 新しいアーカイブマッピングを作成をクリックしてください。
  7. カスタムを設定して、アーカイブマッピングをフォーマットします。フォーマット文字については、下記表を参照。
  8. これらを作成して、アーカイブリストを作成します。