Under the Bridge

a Picture of the Late Him

MT4.1:変数参照専用のモジュールの可能性

2008年2月27日 00:28 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

この新しいテンプレートで試していることがある。変数参照専用のモジュールの可能性である。

どういうこと?

簡単に述べると、一度宣言した(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 内容を少々修正

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.1:変数参照専用のモジュールの可能性

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)