📃

【Movable Type】よく利用するテンプレートの種類と出力について

2024/12/12に公開

概要

MTやPowerCMSで利用するテンプレートのうち、以下とくによく使うテンプレートおよび設定項目について解説しています。

  • インデックステンプレート
  • アーカイブテンプレート
    • 記事アーカイブテンプレート
    • 記事リストアーカイブテンプレート
    • ウェブページアーカイブテンプレート
  • コンテンツタイプテンプレート
    • コンテンツタイプアーカイブテンプレート
    • コンテンツタイプリストアーカイブテンプレート
  • テンプレートモジュール
  • システムテンプレート

インデックステンプレート

おもにトップページやCSS、jsファイルで利用します。
以下、とくに設定が必要な項目について。

テンプレート名

テンプレートの名前を指定する。ここで入力されたものはテンプレート一覧で表示される名前なので、わかりやすいものを指定するとよいです。

テンプレートの内容

ここに入力されたものが再構築されてhtmlなど指定したファイル形式で出力される。

出力ファイル名

インデックステンプレートの場合、出力ファイル名は手入力する。

テンプレートの種類

利用するテーマにより多少の違いはあるものの、おおむね以下いずれかを選択する。

  • メインページ(main_index)
  • JavaScript(javascript)
  • スタイルシート(styles)
  • カスタムインデックステンプレート

トップページで利用するテンプレートは「メインページ」、CSSファイルは「スタイルシート(styles)」、jsファイルは「JavaScript(javascript)」、それ以外のテンプレートは「カスタムインデックステンプレート」といった具合。
「カスタムインデックステンプレート」には独自の定数を設定しておくと、テンプレートの条件分岐が使えるのでオススメです(自分の記事ですが、こちらご参考まで

公開

テンプレートの公開ステータスを以下から選択する。
いずれの設定の場合もテンプレートを「保存と再構築」した場合は、即時反映される。

スタティック(既定)

トップページや記事一覧、記事個別ページなどは基本的にこのステータスを設定する。
この指定にすると、記事やウェブページ、コンテンツデータ記事が公開(更新・削除)されるたび、連動して再構築される。

公開キュー経由

サーバーでcronによりrun-periodic-taskスクリプトを実行している場合に、cronのタスクによって定期的に再構築される。

ダイナミック

ダイナミックパブリッシング機能を利用する場合に、動的に処理されるようになる。

手動

「保存と再構築」ボタンを押したタイミングで再構築される。
CSSやjsファイルなど、常時再構築する必要がないファイルは、これを指定しておくとよい。

公開しない

これを指定すると、再構築されなくなる。
不要ファイルはこの設定にしておくことで、再構築時の予期せぬ事故を防ぐことが可です。ただ、「公開しない」テンプレートが複数あると、一覧画面が見づらくなり人為的なミスの温床にもなりやすいため、不要ファイルは極力削除しておくほうがよいです。

アーカイブテンプレート

以下3つのテンプレートは、まとめてアーカイブテンプレートの項目に登録されます。
カテゴリ一覧や年別・月別一覧のページは、「記事リストアーカイブテンプレート」で作成します。

  • 記事アーカイブテンプレート
  • 記事リストアーカイブテンプレート
  • ウェブページアーカイブテンプレート

以下、とくに設定が必要な項目について。

なお、アーカイブテンプレートはいったん「テンプレート名」を入力・保存してからでないと「アーカイブマッピング」(出力ファイル名)の設定ができないため、最初に該当のアーカイブテンプレート新規作成画面で「テンプレート名」を入力して保存してください。

テンプレート名

テンプレートの名前を指定する。ここで入力されたものはテンプレート一覧で表示される名前なので、わかりやすいものを指定するとよいです。

テンプレートの内容

ここに入力されたものが再構築されてhtmlなど指定したファイル形式で出力される。

アーカイブマッピング

ここで作成するテンプレートの種類と出力ファイル名を設定する。

種類

作成するアーカイブタイプにより選択できるものが決まっており、「記事アーカイブ」は記事、「ウェブページアーカイブ」はウェブページ一択。
「記事リストアーカイブ」の場合は種類がいくつかあり、なかでも以下はとくに使用する機会が多いもの。
他に投稿のユーザー別やユーザー・カテゴリごとの年別・月別アーカイブなども作成可能。

  • 月別
  • 年別
  • カテゴリ

種類を選択し、追加ボタンを押すと、以降の「パス」「公開」項目の設定が可能。
(ひとつのテンプレートファイルに対し、アーカイブマッピングを複数追加することでPC用・SP用と同じ内容を別々のURLで出力することも可能ですが、ここでは説明を割愛します)

パス

テンプレートの出力ファイル名を指定する。あらかじめ指定したアーカイブマッピングの種類に対応したパスがいくつか用意されているが、「カスタム」を選択して、自分で指定することも可能。
パスは用意されている定数を利用して指定する。

以下は筆者の例。

<!-- 記事アーカイブ(年月_記事ID.html) -->
%y%m_%E.html

<!-- ウェブページアーカイブ(フォルダ名/index.html) -->
%c/%i

<!-- 記事リスト(カテゴリ)アーカイブ(カテゴリ名/index.html) -->
%c/%i

また、MTタグが使えるので、MTIfで分岐を書いて、条件により出力ファイル名を変更するということも可能です。

公開

テンプレートの公開ステータスを選択する。インデックステンプレートの項目での説明と重複するため、ここでは説明は割愛。

コンテンツタイプテンプレート

以下2つのテンプレートは、まとめてコンテンツタイプテンプレートの項目に登録されます。

  • コンテンツタイプアーカイブテンプレート
  • コンテンツタイプリストアーカイブテンプレート

以下、とくに設定が必要な項目について。

テンプレート名

テンプレートの名前を指定する。ここで入力されたものはテンプレート一覧で表示される名前なので、わかりやすいものを指定するとよいです。

コンテンツタイプ

出力するコンテンツタイプを指定する。

テンプレートの内容

ここに入力されたものが再構築されてhtmlなど指定したファイル形式で出力される。

アーカイブマッピング

アーカイブテンプレートとは違い、コンテンツタイプアーカイブの場合は一度保存しなくても最初から指定が可能(「公開」ステータスはアーカイブマッピング追加後に表示される)

種類

作成するアーカイブタイプにより選択できるものが決まっており、「コンテンツタイプアーカイブ」はコンテンツタイプ別一択。
「コンテンツタイプリストアーカイブ」の場合は種類がいくつかあり、カテゴリ別、年別・月別、ユーザー別やユーザー・カテゴリごとの年別・月別アーカイブなどが作成可能。

(アーカイブテンプレート同様、ひとつのテンプレートファイルに対し、アーカイブマッピングを複数追加することでPC用・SP用と同じ内容を別々のURLで出力することも可能ですが、ここでは説明を割愛します)

パス

テンプレートの出力ファイル名を指定する。あらかじめ指定したアーカイブマッピングの種類に対応したパスがいくつか用意されているが、「カスタム」を選択して、自分で指定することも可能。
パスは用意されている定数を利用して指定する。

また、MTタグが使えるので、MTIfで分岐を書いて、条件により出力ファイル名を変更するということも可能です。

公開

テンプレートの公開ステータスを選択する。インデックステンプレートの項目での説明と重複するため、ここでは説明は割愛。

テンプレートモジュール

テンプレートモジュールは上記の各テンプレートにMTIncludeで組み込む形で使用します。
ヘッダーやフッターなどの共通パーツをテンプレートモジュールとして作成しておくと、変更が発生した際に修正する箇所がひとつで済むので便利です。

テンプレート名

テンプレートの名前を指定する。ここで入力されたものはテンプレート一覧で表示される名前なので、わかりやすいものを指定するとよいです。
なお、ここで指定した名前がMTIncludeで組み込む際のmoduleモディファイアの値になります。

モジュール本体

ここに入力されたものが、各テンプレートに組み込んで再構築された際に出力される。

あまりモジュール化すると細分化されすぎて逆に管理しづらくなりますが、筆者はどの案件でも以下のパーツは共通してモジュール化するようにしています。

  • 定数設定ファイル
  • headパーツ
  • headerパーツ
  • footerパーツ
  • ナビゲーションメニュー

システムテンプレート

システムテンプレートはMTやPowerCMSで主に動的に処理されるもの(コメント投稿や検索結果表示など)で利用します。

テンプレート名

システムテンプレートではあらかじめ名称がセットされている。

テンプレートの内容

ここに入力されたものが処理時に表示される。

公式リファレンス

Discussion