Jeans CMS 製作日記:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2009年 06月の記事
SQLite3に切り替えた [General]
2009年6月18日
今まで、SQLite2で書いてきたが、SQLite3に移行することにした。理由は、次のとおり。
以下のテストスクリプトを実行してみた。
以下のテストスクリプトを実行してみた。
<?php $sqlite2=new pdo('sqlite2::memory:'); $sqlite2->prepare('This is an error query.'); print_r($sqlite2->errorInfo()); $sqlite3=new pdo('sqlite::memory:'); $sqlite3->prepare('This is an error query.'); print_r($sqlite3->errorInfo());
テンプレートの仕様 [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などに分岐する。
例えば、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などに分岐する。