use MT::Template;
my $tmpl = MT::Template->load($tmpl_id);
defined(my $html = $tmpl->build($ctx))
or die $tmpl->errstr;
$tmpl->name('New Template name');
$tmpl->save
or die $tmpl->errstr;
MT::Templateオブジェクトは、Movable Typeシステムのテンプレートに相当し、テンプレートの内容とともに、テンプレートの適用対象となるファイルとの関連性を示すメタ・データなども格納します。さらに標準テンプレートから出力ファイルを作成するのに必要な機能も含みます。
テンプレートを外部ファイルにリンクすると、Movable Typeでの更新がファイルに(また、その逆も)反映されます。このため、Webフォームのテキストエリアでテンプレートを編集するのが苦手なユーザーでも、FTPをサポートするオーサリング・ツールやエディターでテンプレートの編集できます。
MT::Templateは、MT::Objectのサブクラスで、MT::Objectのデータ管理およびデータ保存用のメソッドをすべて継承しています。新規オブジェクトの生成、既存オブジェクトの読み込み、オブジェクトの保存などの詳細は、MT::Objectを参照してください。
MT::Templateインターフェース独自のメソッドは次のとおりです。
$ctxに指定したコンテクスト(MT::Template::Contextオブジェクト)とオプション引数の条件セット\%condをもとに、テンプレートから出力ファイルを作成します。テンプレートは、まずパーシングによりトークンのリストとなり、これを解釈/実行することで最終的な出力が得られます。
\%condを指定する場合、ハッシュ・リファレンスとして指定しなければなりません。このハッシュは、テンプレート・タグ名(先頭の"MT"を除いた部分)をキーとし、その条件タグがテンプレート中にあった場合に、それを出力に含めるかどうかを示すブーリアン・フラグを値としたものです。
戻り値は出力となるスカラー文字列です。エラー発生時にはundefを返します。空文字列('')と数値の0は、このメソッドの戻り値として有効ですので、エラーが発生したかどうかをチェックするには、次のようにundefかどうかを明示的に調べる必要があります。
defined(my $html = $tmpl->build($ctx))
or die $tmpl->errstr;
インデックス・テンプレートを構築してできるページのURLを返すメソッドで、$tmplがインデックス・テンプレートの場合にのみ有効です。
テンプレートがインデックス・テンプレートでない場合の他、インデックス・テンプレートがまだ構築されていない場合(スタティック・テンプレートのとき)や、インデックス・テンプレートに対応するFileInfoレコードがない場合(ダイナミック・テンプレートのとき)にも、このメソッドはundefを返します。
MT::Templateオブジェクトは次のデータを格納します。これらのフィールドは、MT::Objectで説明したような標準的なデータ・アクセス用メソッドで参照あるいは設定できます。
テンプレートのIDです。
そのテンプレートが登録されているブログのIDです。
テンプレートの名前です。この名前は、テンプレート、特にテンプレート・モジュール(通常のテンプレートとして保存されます)を<MTInclude>タグでインクルードする際に使用する名前なので、ブログ内で一意でなければなりません。
テンプレートの種類です。次のいずれかの値になります。
インデックス・テンプレート
日付アーカイブ
カテゴリー・アーカイブ
エントリー・アーカイブ
システム・テンプレート(コメントの一覧用)
システム・テンプレート(コメント・プレビュー)
システム・テンプレート(コメント・エラー)
システム・テンプレート(画像のポップアップ・ウィンドウ)
テンプレート・モジュール
テンプレートの出力ファイルの名前/パスです。インデックス・テンプレートの場合のみこの値を持ちます。
テンプレートの内容です。テンプレートが外部のファイルとリンクしている場合、この内容と外部ファイルの間で自動的に同期が行われます。
メイン・ページの再構築、すべてのページの再構築、あるいは新規エントリーの保存時に、インデックス・テンプレートの再構築を行うかどうかを示すブーリアン・フラグです。
テンプレートが外部ファイルにリンクされている場合、リンク先ファイルのファイルシステム上の名前/パスを表します。
リンク先ファイルの最終更新日時です。リンク先のファイルがディスク上で変更され、再同期が必要かどうかを判別する際、この値とlinked_file_sizeの値が用いられます。
リンク先ファイルのサイズ(byte)です。リンク先のファイルがディスク上で変更され、再同期が必要かどうかを判別する際、この値とllinked_file_mtimeの値が用いられます。
テンプレート・レコードの検索では、IDによる検索の他、次のフィールドの任意の組み合わせによる検索やソートを行うことができます。詳細は、MT::Objectのloadメソッドを参照してください。
- MT::Template::removeでテンプレートを削除すると、テンプレート・レコードだけでなく、そのテンプレートと関連付けられたMT::TemplateMapオブジェクトもすべて削除されます。
- テンプレートが外部ファイルにリンクしている場合、MT::Template::saveの呼び出し時にテンプレートの内容に合わせてディスク上のファイルを同期し、MT::Template::text(テンプレートの内容を取得するデータ・アクセス用メソッド)ディスク上のファイルに合わせてテンプレートの内容を同期します。