設計思想とかjavascriptとか

http://d.hatena.ne.jp/nazoking/20041222
より言及いただいた。
テンプレートの要件としてあげられている、

「デザイナー用HTML(テンプレート)←→プログラマー用HTML(PHPとか)」の可逆変換が必要(というか変換しないですむor表示時に自動変換ならそれが一番)。

というのが、具体的にはどういうことか解らないが、zoganの設計思想(そんなたいしたことでもないが)を書いて置こう。

まず始めに、僕は「プロ」じゃないのです。ということで、廻りにプロのWEBデザイナーはいない。けど、画面デザインは、めんどくさいので人にやって欲しい。
具体的には、ちょっとしたイントラの画面変更とか、かな。「ここのHTMLかえたら変わるから自分でやってよー。」
あと、OSSのアプリに使うことも想定。プログラム知識は無いけど、画面デザイン変えたいなんて言うニーズね。

ということで、普通のHTMLエディタで編集できるようにしたいとか、if文とかの制御構造を入れたくないという訳で、あのような仕様になったわけです。

あと、カスタムタグみたいなpull型の仕様も不可。素人には、できるだけプログラム的なことをさせたくないのです。push型にする。

となると、さらに、セキュリティーも非常に重要になってきます。素人がいじる訳だから。そこで、デフォルトでタグがエスケープされる仕様となっています。

セキュリティーから考えないといけないのですが、積み残しなのが、javascriptです。現状、「つかうな!」ということで対処ですかね。使わないのが一番安全。

v:behavior とかjavascriptを扱うような命令を追加するのはどうかとおっしゃっている。データの入力チェックをしたいというニーズのようだ。これについては、HTML_QuickFormとの連携を考えるほうがいいのか、おっしゃるように専用の命令を用意するほうが良いのか今後の課題である。

テキスト内の改行を brタグ にするのはfunction機能で関数定義すれば出来ます。(が、pタグの中にbrをいれるのは邪道と思っているので、システム定義はされていない。)

マニュアルが英語なのは、日本語を英語にするより、英語を日本語にするほうが簡単なので、英語で書き始めて、日本語化する余裕が無いだけです。すんません。

あと、

Amrita や Zogan はプレゼンテーションロジックをデータ構造で表していて、それが違和感を感じさせる。その手段をとる場合「テンプレートがどのロジックを使うかを意識しながらデータ構造を決定」しなければならない。

とおっしゃっているが、テンプレート等のプレゼンテーションにデータ構造が依存するのではなく、データ構造にプレゼンテーションを依存させるという発想だ。理想的には、var_dumpでデータ構造を表示しても読めるようなデータ構造をつくり、それを表示させるテンプレートを作る。こうすることで、プログラマ側が楽を出来、テンプレートをいじるのも楽になり、安全性も高まる。ただし、自由度は当然下がり、それがこのタイプのテンプレートの限界でもある。

個人的には自由度をもとめるなら、PHP自体をテンプレートにするというのが良いのではないかと思う。良い例が、WordPress http://wordpress.xwd.jp/ などで見られる。