コード

usingタグ

2010年8月15日

Jeans CMSのかなり初期のバージョンでは、すべてのスキンタグについてオーバライドすることが可能でした。例えば、あるプラグインで<%blog%>タグをオーバーライドすることにより、スキンの書き換え無しに、表示内容をプラグインで自由にカスタマイズすることが可能になっていました。

現在の仕様では、例えばjp_Testというプラグインを使用する場合、<%blog%>を<%jp.test.blog%>のように書き換える必要があります(jp_Test::tag_blog()を用意した場合)。以前あった「オーバーライド」の仕様では、jp_Testの側に「<%blog%>タグの機能を変更しますよ」という記述を入れておけば、ユーザーの側では<%blog%>タグを書き換える必要はなかったわけです。

もともとあった機能を削ったのは、こういった機能はうまく働いているときには便利であるけれども、バグが出始めると、コードの中のどこでバグが出ているかを追いかけるのが非常に大変だったからです。また、この機能をはずすことは、Jeans本体のコードの簡潔化と実行速度の改善にも繋がっています。

現在、jp_Nucleusプラグインを作成し、Nucleus用に作成されたスキンをJeansでも使えるようにしようとしてます。今書いているコードでは、Nucleus用スキンのスキン変数、例えば<%blog%>なら、<%jp.nucleus.skin.blog%>に変更する必要があります。他のスキン変数についても、同様に、<%jp.nucleus.skin.xxxx%>に書き換えなければなりません。

これがどうにかならないかと色々考えていたところ、ある名前空間の機能を省略して呼び出せる、"using"という命令をJeansでサポートすればよいことに気がつきました。例えばスキン中で、<%using(jp.nucleus.skins)%>と記述しておけば、以降、<%blog%>と書くだけで、<%jp.nucleus.skins.blog%>が呼び出されるようになります。

コメント

Kat (2010年8月16日 11:01:56)

この機能は、SVN247以降のバージョンで使えます。

Kat (2010年8月18日 05:20:36)

SVN248で、<%using%>タグは、skin.incに一箇所記述するだけで、機能するようにしました。

コメント送信