General

テンプレートの仕様

2009年6月15日

Nucleusでいうところのテンプレート変数の仕様がほぼ決まった。Nucleusでは<%title%> <%body%>などいくつかあるが、Jeansでは一つのスキン変数(例えば、<%contents%>)を、Nucleusのテンプレート変数に割り当てる。

例えば、Nucleusの<%title%>は、Jeansでは<%contents(title)%>とする。いまのところ、この<%contents%>のシンタックスは、以下のとおり。

<%contents( column-SQL [, mode [, maxlength [, toadd ] ] ] )%>
・column-SQLは、title, body, more など。SQLクエリーのSELECT節の内容に準拠。
・modeは、hsc(デフォルト), raw, strip_tags, shorten, constのどれか。
・shortenモードの際、maxlength, toadd を指定することができる。

ただし、このようなシンプルな仕様では、Nucleusの<%morelink%>のような複雑な動きをするものを実装しづらい。これを可能にするため、例えば$row['morelink']に、ラムダもしくはarrayで指定されたクラスメソッドが設定されている場合に、それを呼び出すことにする。

view::showUsingQueryの実行の際、それぞれのrowのパースの前後に実行するためのラムダ(もしくは、クラスメソッド等)を指定できるよう西、このラムダ中で$rowを書き換えることができるようにしておく。

contentsというつづりが長いので、rowとか、dataとか、もう少し短いものにしようかと考えているところ。

ところで、先日議論したスキンの仕様であるが、スキンディレクトリ内にあるskin.incをパースする方法で、ほぼ決まり。skin.inc内に<%skin.selector%>を記述し、skin::skinvar_selector()メソッド内で、skin_index.incやskin_item.incなどに分岐する。

コメント

Kat (2009年6月18日 13:29:29)

SQLiteのユーザ関数登録法。

INSERT INTO user_function ( funct_name , funct_type , funct_code , funct_num_args , base_id )
VALUES ( 'test2' , 1 , 'function test2($str) {return $str;}' , 1 , NULL ) ;

コメント送信