記事本文
アーカイブファイルパスの仕様と <$MTFileTemplate$>
entry_basename.html と entry_basename/index.html で触れたアーカイブ・マッピングですが、 Movable Type 3.2 になってからは何だか短縮記法みたいな書き方が登場しました。
例えば、「公開の設定」の「アーカイブ・マッピング」の画面にてエントリー・アーカイブで yyyy/mm/entry_basename.html を選択した後、再度「カスタマイズする」を選ぶと、 yyyy/mm/entry_basename.html の部分が
%y/%m/%f
という表記に変わり、それをカスタマイズする形になります。
これの仕様ってどうなっているのかなあと思ってマニュアルをごそごそ読みふけったり、色々と検索してみたりしていると、 Movable Type 3.2 User Manual: E: Archive File Path Specifiers Archives というマニュアルページを発見しました。
これによると、
The following are the recognized specifiers to create a "custom" Archive File Path on the weblog Publishing settings page.
ということで、やはり「公開の設定」の「アーカイブ・マッピング」部分で用いるもののようです。
なお、この仕様については Movable Type: アーカイブ・マッピングの変更方法 [ItsMemo IT] にて日本語訳が掲載されているので合わせてご覧ください。
ここで、私は何となく「このアーカイブファイルパスってテンプレートタグで使えないのかなあ」と思い、拙作の Movable Type 3.2 のテンプレートタグ一覧を眺めていると、 MTFileTemplate というそれっぽいテンプレートタグが !
しかもこの MTFileTemplate のマニュアルを見ると、
Produces a file name and path using the archive file naming specifiers.
See Appendix E.
と書いてあるので、やはり使えそうです。
<$MTFileTemplate$> を使う
<$MTFileTemplate format="出力フォーマット"$>
という形式で記述します。
出力フォーマットによっては特定のコンテナタグ内でしか使えないものがあり、それに伴って使えるテンプレートや使えないテンプレートが分かれますが、後述する代替記述の内容から判断してください。
なお、テンプレート内ではなく「公開の設定」の「アーカイブ・マッピング」部分で用いる場合は出力フォーマットのみを書けばいいので、間違えないようにしてください。
また、 <$MTFileTemplate$> は Movable Type 3.2 以降のバージョンでのみ使用できるようです。
<$MTFileTemplate$> の各種フォーマットとその内容
以下の表は、次に示すサンプルデータを用いた場合の表示結果を示しています。
表示結果を分かりやすくするために、わざと空白を含ませたり - を含ませたりしています。
- プロフィール画面の「表示名」
-
m_a ko-to
- 「エントリー・ファイル名」
-
changelog_ver101_to-102
- カテゴリ名
-
information/c_h a-nge 更新履歴
- 記事の作成日時
-
2005-02-01T01:02:03+09:00
- 記事の ID
-
1210
- 「アーカイブの拡張子」
-
php
| <$MTFileTemplate$> の記述 | <$MTFileTemplate$> の表示結果 | 各種テンプレートタグによる代替記述 | 代替記述の表示結果 | 備考 |
|---|---|---|---|---|
<$MTFileTemplate format="%a"$> |
m_a_koto | <$MTEntryAuthorDisplayName dirify="1"$> |
m_a_koto | MTEntryAuthorDisplayName ( 投稿者のプロフィール画面の「表示名」 ) を表示します。日本語が使われている場合は除去されます。 |
<$MTFileTemplate format="%-a"$> |
m_a-koto | <$MTEntryAuthorDisplayName$> ※若干の違いあり |
m_a ko-to | MTEntryAuthorDisplayName ( 投稿者のプロフィール画面の「表示名」 ) を表示します。日本語が使われている場合は除去されます。また、 <$MTFileTemplate format="%a"$> との違いとして、 MTEntryAuthorDisplayName に空白が含まれていた場合は - に変換され、また MTEntryAuthorDisplayName 自体に含まれていた - は除去されるため、 <$MTEntryAuthorDisplayName$> では完全には代替できません。 |
<$MTFileTemplate format="%b"$> |
changelog_ver101_to-102 | <$MTEntryBasename$> |
changelog_ver101_to-102 | 「エントリー・ファイル名」を表示します。 |
<$MTFileTemplate format="%c"$> |
information/c_h_ange_ | <$MTSubCategoryPath$> |
information/c_h_ange_ | MTSubCategoryPath ( 最上位カテゴリから現在のカテゴリまでのパスを / で区切ったもの ) を表示します。カテゴリ名に日本語が使われている場合は除去されます。 |
<$MTFileTemplate format="%-c"$> |
information/c_h-ange- | <$MTSubCategoryPath$> ※若干の違いあり |
information/c_h_ange_ | MTSubCategoryPath ( 最上位カテゴリから現在のカテゴリまでのパスを / で区切ったもの ) を表示します。カテゴリ名に日本語が使われている場合は除去されます。また、 <$MTFileTemplate format="%c"$> との違いとして、カテゴリ名に空白が含まれていた場合は - に変換されるため、 <$MTSubCategoryPath$> では完全には代替できません。 |
<$MTFileTemplate format="%C"$> |
c_h_ange_ | <$MTEntryCategory dirify="1"$> |
c_h_ange_ | MTEntryCategory ( プライマリカテゴリの名前 ) を表示します。日本語が使われている場合は除去されます。 |
<$MTFileTemplate format="%-C"$> |
c_h-ange- | <$MTEntryCategory$> ※若干の違いあり |
c_h a-nge 更新履歴 | MTEntryCategory ( プライマリカテゴリの名前 ) を表示します。日本語が使われている場合は除去されます。また、 <$MTFileTemplate format="%C"$> との違いとして、 MTEntryCategory に空白が含まれていた場合は - に変換され、また MTEntryCategory 自体に含まれていた - は除去されるため、 <$MTEntryCategory$> では完全には代替できません。 |
<$MTFileTemplate format="%d"$> |
01 | <$MTArchiveDate format="%d"$> |
01 | 記事の作成日を 2 桁で表示します。日付が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate format="%D"$> |
1 | <$MTArchiveDate format="%e"$> |
1 | 3-letter language-dependent abbreviation of the week day. という説明になっていますが、実際には記事の作成日を 2 桁で表示します。日付が 1 桁の時には先頭に空白を配置します。 |
<$MTFileTemplate format="%e"$> |
001210 | <$MTEntryID pad="1"$> |
001210 | MTEntryID ( エントリー ID ) を 6 桁で表示します。 ID が 6 桁に満たない場合は先頭から 0 を使って 6 桁に揃えます。 |
<$MTFileTemplate format="%E"$> |
1210 | <$MTEntryID$> |
1210 | MTEntryID ( エントリー ID ) を表示します。桁数はそのままで表示します。 |
<$MTFileTemplate format="%f"$> |
changelog_ver101_to-102.php | <$MTArchiveFile$> |
changelog_ver101_to-102.php | MTArchiveFile ( 拡張子付のファイル名 ) を表示します。 <$MTArchiveFile$> だけでなく <$MTEntryBasename$><$MTBlogFileExtension$> でも代替が可能です。 |
<$MTFileTemplate format="%F"$> |
changelog_ver101_to-102 | <$MTEntryBasename$> |
changelog_ver101_to-102 | 拡張子が付かないファイル名を表示します。 |
<$MTFileTemplate format="%h"$> |
01 | <$MTArchiveDate format="%H"$> |
01 | 24 時間表記の記事の作成時間を 2 桁で表示します。時間が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate format="%H"$> |
1 | <$MTArchiveDate format="%k"$> |
1 | 24 時間表記の記事の作成時間を 2 桁で表示します。時間が 1 桁の時には先頭に空白を配置します。 |
<$MTFileTemplate format="%i"$> |
index.php | <$MTIndexBasename$><$MTBlogFileExtension$> |
index.php | MTIndexBasename ( インデックスファイル名 ) を拡張子付きで表示します。 |
<$MTFileTemplate format="%I"$> |
index | <$MTIndexBasename$> |
index | MTIndexBasename ( インデックスファイル名 ) を拡張子無しで表示します。 |
<$MTFileTemplate format="%j"$> |
032 | <$MTArchiveDate format="%j"$> |
032 | 記事の作成日の年初からの日数を 3 桁で表示します。日数が 3 桁に満たない場合は先頭から 0 を使って 3 桁に揃えます。 |
<$MTFileTemplate format="%m"$> |
02 | <$MTArchiveDate format="%m"$> |
02 | 記事の作成月を 2 桁で表示します。月が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate format="%n"$> |
02 | <$MTArchiveDate format="%M"$> |
02 | 記事の作成分を 2 桁で表示します。分が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate format="%s"$> |
03 | <$MTArchiveDate format="%S"$> |
03 | 記事の作成秒を 2 桁で表示します。秒が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate format="%x"$> |
.php | <$MTBlogFileExtension$> |
.php | MTBlogFileExtension ( 「公開の設定」の「アーカイブの拡張子」 ) を表示します。 |
<$MTFileTemplate format="%y"$> |
2005 | <$MTArchiveDate format="%Y"$> |
2005 | 記事の作成年を 4 桁で表示します。 |
<$MTFileTemplate format="%Y"$> |
05 | <$MTArchiveDate format="%y"$> |
05 | 記事の作成年を 2 桁で表示します。年が 1 桁の時には先頭に 0 を配置します。 |
<$MTFileTemplate$> の感想
空白を - に置き換えるもの ( %-a と %-c と %-C ) 以外は他のテンプレートタグでの代替が可能なので、積極的にテンプレート内で <$MTFileTemplate$> を使う必要はないかな、と思いました。
テンプレートの記述をなるべくすっきりさせたいという方は <$MTFileTemplate$> を用いると良いかもしれません。
しかし、テンプレート内ではなく「公開の設定」の「アーカイブ・マッピング」部分にてこの仕様自体はよく利用することになると思うので、早見表として先ほどの各種フォーマットとその内容の表をメモしていただくと良いかも。

