Jeans CMS 製作日記:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2008年 12月の記事

NP_admin [General]

2008年12月26日

Jeans自体のコード書きは少しお預けにして、Nucleus用のSkinnable Adminの作成を始めた。これを進めていく上で、お宝を発見したと言うか、頭の中がずいぶん整理されてきたと言うか、得るものがあったので、メモしておく。

ここで得られたことは、Jeansのスキン・テンプレートエンジンの構造に大きく影響するかもしれない。やはり、実際の用途に当てはめながらこういったエンジンを作っていくほうが、色々と見えてくるものなのだろうか。

skin.selector [General]

2008年12月15日

Nucleusでは、スキンの表示は、globalfunctions.phpにあるselector()という関数で行う。同様の仕組みをJeansでも実装する必要があるが、これをcore.phpに入れるのにはためらいがあった。というのは、Nucleusのselector()は実行しない場合があるからで、例えばaction.phpの呼び出しなどがこれに相当する。Jeansでは、実行しないコードはパースもしないのが基本だ。

色々考えた末、selector()に相当するスキン変数、<%skin.selector%>を作成することにした。スキンのパースは、skin_start.incから始まり、このincファイルでは例えば次のように記述する。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%text(_SKIN_LANG)%>" lang="<%text(_SKIN_LANG)%>">
<head>
<%skin.selector(header)%>
</head>
<body>
<%skin.selector%>
</body>
</html>

こうすることにより、

1)selector()相当の機能を、core.phpから外に出すことが可能
2)スキンの記述を、<html>…</html>などの開始タグ・終了タグときれいに対応付けることが可能

といったメリットがある。今後同様に、Nucleusにあるさまざまな機能をこのような形で実装することにより、ハウスキーピング遺伝子のシンプルさを保つような方法を取っていくと思う。

補足:
1)ファイル名をskin_start.incにするかどうかは未定

2)NucleusのスキンをJeansに取り込む際は、次のようなコードを含むskin_start.incを作成すれば事足りる。
<%skin.selector%>

3)<%parsedinclude%>はviewクラスで処理される特別なスキン変数であり、ファイル内容はスキンパース時にコンパイルされる。一方、<%skin.selector%>は通常のスキン変数であり、ファイル内容はスキン変数の呼び出し時にコンパイルされる。これは、例えば個別アイテムページの表示の際はメインの目次ページのパースは必要ないため。

ver 0.2.1.1.0α [General]

2008年12月6日

間違って作成中及び以前のバージョンのJeansを全部消去してしまいそうになったので、バックアップの意味で現在のバージョンを公開。

デフォルトスキンのindexとitemがほぼ表示できるようになっている。管理画面などはまだまったく手をつけていない。

<%media(20081207-jeans 0.2.1.1.0.zip|jeans 0.2.1.1.0.zip)%>

イベント機能について [General]

2008年12月4日

現在、以前述べたリファクタリング計画を遂行中で、少しずつではあるが、すっきりしてきた。アイテム用テンプレート変数のためのメソッド(それぞれ、1-5行ほど)がitemクラスにずらっと並んだ姿は、壮観である。

さて、まだまだ先のことなのだが、イベント機能に付いて風呂でいろいろ考えていて思いついたことがあるので、それをメモ。