« 目次

Movable Type オブジェクト・リファレンス

MT::Template

概要

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インターフェース独自のメソッドは次のとおりです。

$tmpl->build($ctx [, \%cond ])

$ctxに指定したコンテクスト(MT::Template::Contextオブジェクト)とオプション引数の条件セット\%condをもとに、テンプレートから出力ファイルを作成します。テンプレートは、まずパーシングによりトークンのリストとなり、これを解釈/実行することで最終的な出力が得られます。

\%condを指定する場合、ハッシュ・リファレンスとして指定しなければなりません。このハッシュは、テンプレート・タグ名(先頭の"MT"を除いた部分)をキーとし、その条件タグがテンプレート中にあった場合に、それを出力に含めるかどうかを示すブーリアン・フラグを値としたものです。

戻り値は出力となるスカラー文字列です。エラー発生時にはundefを返します。空文字列('')と数値の0は、このメソッドの戻り値として有効ですので、エラーが発生したかどうかをチェックするには、次のようにundefかどうかを明示的に調べる必要があります。

defined(my $html = $tmpl->build($ctx))
    or die $tmpl->errstr;
$tmpl->published_url

インデックス・テンプレートを構築してできるページのURLを返すメソッドで、$tmplがインデックス・テンプレートの場合にのみ有効です。

テンプレートがインデックス・テンプレートでない場合の他、インデックス・テンプレートがまだ構築されていない場合(スタティック・テンプレートのとき)や、インデックス・テンプレートに対応するFileInfoレコードがない場合(ダイナミック・テンプレートのとき)にも、このメソッドはundefを返します。

データ・アクセス用メソッド

MT::Templateオブジェクトは次のデータを格納します。これらのフィールドは、MT::Objectで説明したような標準的なデータ・アクセス用メソッドで参照あるいは設定できます。

id

テンプレートのIDです。

blog_id

そのテンプレートが登録されているブログのIDです。

name

テンプレートの名前です。この名前は、テンプレート、特にテンプレート・モジュール(通常のテンプレートとして保存されます)を<MTInclude>タグでインクルードする際に使用する名前なので、ブログ内で一意でなければなりません。

type

テンプレートの種類です。次のいずれかの値になります。

index

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

archive

日付アーカイブ

category

カテゴリー・アーカイブ

individual

エントリー・アーカイブ

comments

システム・テンプレート(コメントの一覧用)

comment_preview

システム・テンプレート(コメント・プレビュー)

comment_error

システム・テンプレート(コメント・エラー)

popup_image

システム・テンプレート(画像のポップアップ・ウィンドウ)

custom

テンプレート・モジュール

outfile

テンプレートの出力ファイルの名前/パスです。インデックス・テンプレートの場合のみこの値を持ちます。

text

テンプレートの内容です。テンプレートが外部のファイルとリンクしている場合、この内容と外部ファイルの間で自動的に同期が行われます。

rebuild_me

メイン・ページの再構築、すべてのページの再構築、あるいは新規エントリーの保存時に、インデックス・テンプレートの再構築を行うかどうかを示すブーリアン・フラグです。

linked_file

テンプレートが外部ファイルにリンクされている場合、リンク先ファイルのファイルシステム上の名前/パスを表します。

linked_file_mtime

リンク先ファイルの最終更新日時です。リンク先のファイルがディスク上で変更され、再同期が必要かどうかを判別する際、この値とlinked_file_sizeの値が用いられます。

linked_file_size

リンク先ファイルのサイズ(byte)です。リンク先のファイルがディスク上で変更され、再同期が必要かどうかを判別する際、この値とllinked_file_mtimeの値が用いられます。

データの検索

テンプレート・レコードの検索では、IDによる検索の他、次のフィールドの任意の組み合わせによる検索やソートを行うことができます。詳細は、MT::Objectloadメソッドを参照してください。

  • MT::Template::removeでテンプレートを削除すると、テンプレート・レコードだけでなく、そのテンプレートと関連付けられたMT::TemplateMapオブジェクトもすべて削除されます。
  • テンプレートが外部ファイルにリンクしている場合、MT::Template::saveの呼び出し時にテンプレートの内容に合わせてディスク上のファイルを同期し、MT::Template::text(テンプレートの内容を取得するデータ・アクセス用メソッド)ディスク上のファイルに合わせてテンプレートの内容を同期します。

Copyright © 2001-2006 Six Apart, Ltd. All Rights Reserved.