アーカイブの制御(その1)

Movable Typeでは、日付毎やカテゴリ毎などでアーカイブページを出力することができます。
個々のアーカイブページは、アーカイブテンプレートに沿って出力されます。
また、アーカイブページのファイル名は、アーカイブマッピングによって画一的に決まります。

ただ、CMS的にMovable Typeを使うと、以下のようなことが出てくることがあります。

  • 特定のカテゴリだけアーカイブページのテンプレートを変えたい
  • 特定のブログ記事だけ、他のブログ記事とアーカイブページのファイル名の付け方を変えたい
  • カテゴリごとに、出力するアーカイブを変えたい(例:「商品情報」カテゴリの記事はカテゴリアーカイブページだけ出力し、「新着情報」カテゴリの記事は年別アーカイブページだけ出力する)

そこで、今日から数回に分けて、アーカイブの制御について解説します。
今日は、アーカイブマッピングの基本を解説します。

1.アーカイブマッピングの基本

アーカイブマッピングとは、アーカイブテンプレートから個々のアーカイブページを出力する際に、アーカイブページのタイプと、ファイル名の付け方を決める仕組みのことです。

アーカイブテンプレートを編集する状態にし、「テンプレートの設定」の部分を開くと、そのテンプレートのアーカイブマッピングを調べることができます。
例えば、Movable Type 4.2の「既定のブログ」のテンプレートセットで、「ブログ記事」アーカイブテンプレートのアーカイブマッピングを見ると、初期値では以下のようになっています。

種類ブログ記事
パスyyyy/mm/entry-basename.html

アーカイブマッピングの設定例

「種類」が「ブログ記事」になっていますので、このアーカイブマッピングによって、ブログ記事毎のページが出力されます。
また、「パス」の「yyyy/mm/entry-basename.html」の各部分は、以下のような意味を持っています。

部分意味
yyyy記事の公開日の西暦年を4桁で表わした値(例:2009)
mm記事の公開日の月を2桁で表わした値(例:05)
entry-basename記事の出力ファイル名(ただしファイル名中の「_」は「-」に変換)

なお、記事の出力ファイル名は、記事編集ページの「出力ファイル名」の欄で設定します。

出力ファイル名の設定

2.アーカイブマッピングの例

例えば、以下のように3つのブログ記事を書いたとします。

記事日付記事の出力ファイル名
記事12009年3月1日foo
記事22009年4月1日bar
記事32009年5月1日post_1

また、ブログ記事アーカイブテンプレートでは、パスの設定を「yyyy/mm/entry-basename.html」にしているとします。

この場合、「ブログ記事」のアーカイブテンプレートを再構築すると、記事1~3のそれぞれに対して、1つずつのブログ記事アーカイブページが出力されます。

「yyyy/mm/entry-basename.html」のパスに従うと、記事1では、記事の年(yyyy)が2009、月(mm)が3、出力ファイル名が「foo」なので、アーカイブページのファイル名は「2009/03/foo.html」になります。
同様に、記事2のアーカイブページのファイル名は、「2009/04/bar.html」になります。

また、記事3は、もともとの出力ファイル名は「post_1」です。
しかし、「yyyy/mm/entry-basename.html」のパスの設定に従うと、出力ファイル名に含まれる「_」は「-」に変換されます。
したがって、記事3のアーカイブページのファイル名は、「2009/05/post-1.html」になります。

3.アーカイブページの保存先

アーカイブページのファイルの保存先は、標準の設定だと、ブログのトップページと同じディレクトリになります。
ただし、設定を変えれば、アーカイブページの保存先を、ブログのトップページのディレクトリとは別にすることができます。
設定の手順は以下のとおりです。

  • ブログの「設定」→「公開」メニューを選びます。
  • 公開設定のページが開きます。
  • 「アーカイブをサイトパスとは別のパスで公開する」のチェックをオンにします。
  • 「 アーカイブURL」と「 アーカイブパス」の設定欄が表示されますので、それらを適切に設定します。

例えば、ブログのアドレスが「http://www.example.com/」で、それに対応するサーバー上のディレクトリが「/home/melody/public_html/blog」であるとします。
ここで、アーカイブページのアドレスが、「http://www.example.com/archives/・・・」の形になるようにしたいとします。

今の状況では「http://www.example.com/」に対応するサーバー上のディレクトリが「/home/melody/public_html/blog」です。
したがって、「http://www.example.com/archives/」に対応するサーバー上のディレクトリは、「/home/melody/public_html/blog/archives」になります。
そこで、「アーカイブURL」の欄に「http://www.example.com/archives/」入力し、「アーカイブパス」の欄に「/home/melody/public_html/blog/archives」と入力します。

アーカイブURL/アーカイブパスの設定例