MT4.1:変数参照専用のモジュールの可能性
この新しいテンプレートで試していることがある。変数参照専用のモジュールの可能性である。
どういうこと?
簡単に述べると、一度宣言した(MTSetVarで値を代入した)変数を、他のいろんなモジュールで使いまわしたい、ということ。
例を挙げると、ページをphp化している場合、archives.phpへのリンクが欲しいとする。全ページで使用しているグローバルナビゲーションでこのarchives.phpへのリンクを貼らなければいけない。これは<MTBlogURL>archives.php とでも書けば、いつでも取れるのであるが、いろんなページでこういうことをやっていると、収拾つかなくなる。記述しているのはどのモジュールだったかな...?...ということになりやすいと思うのだ。
注:テンプレート使用者の方針により、拡張子はphpとは限らない。htmlの場合だってある。拡張子を管理画面で変更した時点で、全てのテンプレート中の「archives.html」を、ひとつも間違えずに正確に「archives.php」と変更せねばならない。面倒だ。MTとは関係が無いが、これは一般的に「規模の大きなプログラム」とかの場合では危険・困難あるいはマズイ状況と思う。
PS:もしかしると、そのような(archives.phpの拡張子を取得する)テンプレートタグが存在し、私がそのテンプレートタグを知らないだけかもしれないのだが。
では実験
アーカイブの拡張子を指定する定数(変数ではなく、敢えて定数と呼ぼう)を、mdlGlobalVarというモジュールを新規作成して、FileExt変数へ"php"という値をMTSetVarする。
<MTSetVar name="FileExt" value="php">
mdlGlobalVarモジュールで宣言したFileExt変数を使用したいテンプレートから次のようにインクルードする。
<$MTInclude module="mdlGlobalVar"$>
使用するときはこうする。
<a href="<$MTBlogURL$>archives.<MTGetVar name="FileExt">" title="Archives">Archives</a>
このサイトの上部に見えるグローバルナビゲーションは、じつはArchivesへのリンクarchives.phpというファイル名の拡張子は、この手法で取得している。これのメリットは、mdlGlobalVarという一箇所のモジュールで宣言した変数を全てのテンプレートモジュールで使用することを一元管理できるところにある。効能は、運用が楽、間違えにくい、ということ※1。管理画面よりファイル拡張子をhtmlからphpへ変更した場合は、mdlGlobalVarモジュール内のFileExt変数のvalueである「html」を「php」に書き換えれば全てのモジュールに適用される。デメリットは、変数の名前付け規約が必要かもということ(簡素な変数名をでたらめにはつけることができない)。変数表を片手に、テンプレートをいじるのだ...。
推測
恐らく、であるが、単に
<MTSetVar name="FileExt" value="php">
FileExt変数を使用するとき、このグローバルなスコープの変数の値をmdlGlobalNaviモジュールから(インクルードされた回数ぶん)何度も取得しているだけであろうと思われる。
例えば「ゴリゴリに弄くったカテゴリリストをハッシュ配列へ」というデータが数箇所から欲しい場合は、mdlGlobalVar内へ記述すると、結果は確かに毎回同じになるのであろうが、再構築時の負担は減るわけではない。何度もカテゴリリストを生成するんだろうなこれは。
メリットは無いわけではない(前述※1のメリットがある)。
なので、「カテゴリリストを並べ替えた状態でハッシュ配列へぶち込み、リンク付きリストで生成して変数ひとつへ代入。この変数を至る所で使用する」こんなことを考えている。つまりこの場合は、カテゴリリストは
<dl>
<dt>カテゴリリスト</dt>
<dd><MTGetVar name="CategoryListbyHashed-TypeA"></dd>
</dl>
とかになるだろう。たぶん。これはこれで、省力化。
※ 2008/02/27 内容を少々修正
- カテゴリ:212MT4.1実験室
トラックバック(0)
このブログ記事を参照しているブログ一覧: MT4.1:変数参照専用のモジュールの可能性
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4のテンプレートタグとプラグインでサインカーブを描く
- MT4.1:クマーを色々(MTSetvarTemplate)
- MT4分科会第2回勉強会に参加しました
- MTOS4.2RC1:各ページの拡張子を得る
- MTでAA
- MT4:MTの変数演算をプラグインで拡張
- MT4.1:「MT」という文字をテーブルの背景色で表現
- 「NabeAzzテンプレート問題・パート2」へ乗ってみる
- 作りたいプラグインの覚え書き
- 世界のナベアツをプラグインで表現
- MT4:世界のナベアツをテンプレートタグで表現(2)
- MT4.1:プラグインを書いてみよう
- MT4.1:予約変数の実験
- Movable Type 4.15 テスト中(1)
- mtde.info の、反省点
- mtde.info の、できる経緯
- MT4:前のエントリ・次のエントリのリンクをカテゴリごとに(条件あり)
- MT4:世界のナベアツをテンプレートタグで表現
- MT4.1:カテゴリ並べ替え・表示非表示切り替え(非プラグイン非カスタムフィールド)
- MT4.1:変数参照専用のモジュールの可能性
- MT4:XHTML+CSS素材テンプレート化の不具合修正・要望リスト
- MT4.1:Movable Type 4.1用テンプレート作った
コメントする