アーカイブの制御(その3・アーカイブファイルのパスをテンプレートタグでカスタマイズする)

昨日に続いて、アーカイブの制御について解説します。
今日は、昨日の話の続きで、アーカイブファイルのパスをテンプレートタグでカスタマイズする方法を解説します。

1.テンプレートタグでアーカイブファイルのパスを設定する

現在のMovable Typeでは、昨日の記事で解説したように、アーカイブファイルのパスをカスタマイズする際に、「%y」などの記号を使うことができます。
この機能は、確かMovable Type 3.2の頃に導入されたと記憶しています。

一方、それ以前のMovable Typeでは、アーカイブファイルのパスは、テンプレートタグを使って指定するようになっていました。
例えば、ブログ記事アーカイブテンプレートで、各ページのファイル名を「年/月/日.html」のように出力するには、パスの設定を「<$MTEntryDate format="%Y/%m/%d.html"$>」のようにしていました。

アーカイブファイルのパスをテンプレートタグで指定する機能は、現在のMovable Typeでも使うことができます。
例えば、昨日の記事では、ブログ記事アーカイブテンプレートのアーカイブファイルのパスを「entry/%y/%m/%d/%f」に設定する例を紹介しました。
この例をテンプレートタグを使って書きなおすと、「entry/<$mt:EntryDate format="%Y/%m/%d"$>/<$mt:ArchiveFile$>」となります。

archive_03_01.png

2.パスの設定で使えるテンプレートタグ

パスの設定で使える使えるテンプレートタグは、個々のアーカイブテンプレートで使えるタグとほぼ同じです。

例えば、アーカイブマッピングをブログ記事にした場合だと、「パス」の欄では、以下のようなテンプレートタグを使うことができるはずです。

  • MTEntryTitleなど、MTEntry系のテンプレートタグ
  • MTArchiveDateなど、MTArchive系のテンプレートタグ
  • MTVersionなど、テンプレートの種類を問わずに使えるテンプレートタグ

ただし、ソースコードをざっと見た限りでは、MTBlogNameなどのMTBlog系のタグは使えないはずです。

ここで、「テンプレートの種類を問わずに使えるテンプレートタグ」を使える点が、カスタマイズの1つのポイントになります。
これらのテンプレートタグには、MTSetVarなどの変数関連のタグや、MTIfなどの制御構造に関するタグも含まれます。
つまり、パスの設定の中で、MTSetVarやMTIfのタグを使うこともできます。
この仕組みを利用すれば、条件に応じて、アーカイブファイルの出力ファイル名を柔軟に変えることが可能になります。

3.アーカイブパスの長さの制限

上で述べたように、アーカイブのパスにMTIfタグ等を書くことはできます。
しかし、問題がいくつかあります。

まず、アーカイブパスの設定欄が、1行のテキストを入力する欄になっていることが挙げられます。
MTIf等のタグを使うなら、複数行の入力欄を使い、MTIfタグのブロックをインデントするなどしないと、非常に分かりにくいでしょう。
残念ながら、アーカイブパスの設定欄をそのまま使う方法では、この問題はクリアできません。

さらに、データベース上では、アーカイブのパスの設定の値は、最長で255文字までに制限されています。
アーカイブパスの設定の中でMTIfタグ等を駆使しようとすると、255文字の制限は非常に厳しいです。

これらの制限をどうやってクリアするかという点は、明日の記事で紹介したいと思います。