アーカイブ・マッピングの出力フォーマット一覧と <$MTFileTemplate$>

http://hxxk.jp/2005/12/09/2322

記事データ

投稿者

真琴

投稿日時

2005-12-09T23:22+09:00

タグ
概要

Movable Type 3.2 より仕様が変わった「公開の設定」の「アーカイブ・マッピング」部分の出力フォーマット。このフォーマットの一覧表や、テンプレート内でも使用する方法をご紹介。

リプライ

2 件のリプライがあります。

記事本文

アーカイブファイルパスの仕様と <$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. Tue という説明になっていますが、実際には記事の作成日を 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$> を用いると良いかもしれません。

しかし、テンプレート内ではなく「公開の設定」の「アーカイブ・マッピング」部分にてこの仕様自体はよく利用することになると思うので、早見表として先ほどの各種フォーマットとその内容の表をメモしていただくと良いかも。

リプライ

2 件のリプライが送られています。

2005-12-09T23:50+09:00 - 真琴

表を大きくしてしまうと本文分をはみ出た上に、サイドバー部分の下に潜り込んでしまう状態を改善しないとなあ……。

2005-12-10T00:20+09:00 - 真琴

シンヤさん ( <a href="http://d.hatena.ne.jp/code404/">http://d.hatena.ne.jp/code404/</a> ) のアドバイスにより、 table:hover{ position: relative; z-index: 9999; } とすることで一応の解決。 :hover 未対応のブラウザは解決していませんが。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など