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などに分岐する。