アーカイブマッピング

wrote2008.01.25

MTを「ブログ」としてではなく、「CMS」として利用する場合、ディレクトリ名とファイル名は自由に設定したい。

ところが、何の設定もしていないデフォルトの状態で新規ページを作成すると、新規で作成したファイルは作成された「年/月/」フォルダ内に格納される。たとえば、2008年1月1日に作成したファイルであれば、「/2008/1/」に格納される。

また、そのファイル名は自動で生成される。たとえば、タイトルが「mtについて」であれば、そのファイル名は「mt.html」。次に作成したページタイトルが「mtのこと」であれば、「mt_1.html」。タイトルにアルファベットがなければ、「post_1.html」のように決定される。

ディレクトリ名とファイル名をカスタマイズする

では、ディレクトリ名とファイル名は自由に設定するにはどうしたらよいのか?その設定方法を紹介(バージョン3.34に限定。バージョン4では設定方法が異なる)。

MT管理画面(メニュー部)

「設定」を選択し、「管理」タブを選択(「管理」タブが表示されていない場合は、「詳細モードに切り替え」を選択)する。

設定選択時のMT管理画面

表示された画面を下にスクロールすると「アーカイブ・マッピング」が見つかるが、この値を設定することで、(ディレクトリ構造を踏まえた)ファイル名を決定することができる。

出力フォーマットを変更する

出力フォーマットのプルダウンメニューから「カスタマイズする」を選択し、変更する。

「エントリー」アーカイブ
変更前(デフォルト) yyyy/mm/entry_basement.html
変更後 %c/%f
補足
  • 「%c」は、カテゴリーで登録したフォルダ名をトップから階層通りに表示する。「category/sub_category/」と同意。
  • 「%f」は、エントリーで任意で指定したファイル名(指定していないときはMTで自動で任意のファイル名)。「entry_basement.拡張子」と同意。

エントリーIDをファイル名にする

ファイル数が多くなれば、1ページごとにファイル名をラベリングするのも用意ではない。同ファイル名を同ディレクトリーに保存してしまうと、エラーメッセージが表示されることなく上書きされてしまう。
そうした事態を防ぐには、エントリーID(エントリーした順番に付けられるID)をファイル名にするのがいい。そうすれば、ファイル名を個別にラベリングする手間とファイル名が重なる心配もない。

「エントリー」アーカイブ
変更後 %c/<$MTEntryID pad="1"$>.html

ちなみに「 pad="1"」とは、例えば12番目に登録した内容であれば、そのファイル名を「000012.拡張子」となり、「 pad="0"」と設定していると、ファイル名は「12.拡張子」となる。

ただし、気をつけたいのが、MTをバージョンアップする場合だ。フォーマットの部分を新しい環境に移し、現状の登録したファイルを全てエクスポート(抽出)し、バージョンアップした環境にインポート(挿入)すれば、手っ取り早く移管ができるのだが、その際、エントリーIDが変わってしまうことがある。つまり、ファイル名は変更されてしまうのだ。これを回避するためには、面倒でも個別にファイル名を指定するようにしたい。