MovableType4で大幅に強化された変数関係のタグによって,強力な programmability を備えたテンプレートですが,公式ドキュメントだけではイマイチ仕様がわからない部分があったり,加えて,掲載されていない様々な隠し機能があるようです。ソースコードを眺めたり再構築を繰り返すこと億千万回,少し判ったことをまとめてみました。
変数関係のテンプレートタグで重要な MTSetVar (mt:setvar),MTGetVar (mt:var) は /mt/lib/MT/Template/ContextHandlers.pm にその実装があります。ここを見ると,公式ドキュメントには掲載されていないようなオプションが発見でき,またその仕様についても明らかになる部分が多々あります。
変数名として使用できる文字列については,ほとんど制限がないと言えます。以下のテンプレートは,変数名として使用できる文字列を調べてみた結果です。
変数名の先頭が $で始まる変数参照,[...]を含む配列参照,{...}を含む連想配列参照以外の制限は特になく,ほぼどのような変数名でも使えるようです。そのため,C言語の構造体を真似て "global.format.timestamp" という変数名を使うもよし(実際は構造体でも何でもありません),ディレクトリパス風に "global/format/timestamp" という変数名を使うもよし,様々なバリエーションが可能です。マルチバイトの変数名も使えるので,日本語で"短い日付書式"なんて変数名もありです(実用性はともかくとして)
先の結果のように自由度が高い変数名は,その大文字と小文字については区別せず同じに扱うため注意が必要です。
ドキュメントに掲載されていないオプションがあるようです。
MTのテンプレート内で多用されているオプションは,ユーザのカスタムテンプレート中でももちろん使えます。現在の変数の保持する値の前後に文字列として値を結合することができます。
MTの環境設定値やURLに指定されたクエリパラメータを読み出すことができます。こちらは読出し専用で値を書込むことはできません。
未定義の変数への代入や参照について。('08/03/07 追記)