HTMLテンプレートの続きの続き

早速ご返答いただきました_(..)_
http://d.hatena.ne.jp/harux/20041222#p1

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

というのが、具体的にはどういうことか解らないが、

ということですが、わかりにくくてすいません。考えながら書いていたので途中から全然別の方向に…PHPを直接埋め込む方法だとデザイナー→プログラマーの一方通行だよな、と思いながら書いていました。
デザイナーもプログラマーも同じテンプレート用ファイルを見て理解&文法チェックできる方法は一番良いのです。


PHPを埋め込んだものをデザイナーに渡していじらせると、一番多いのが「範囲の閉じ忘れ」。テストサーバにおいてプレビューさせてチェックすることができますが、エラーを見てテンプレートファイルを修正することができない。その点タグで埋め込む形式にすると「閉じ忘れ」はデザイナーがチェックできる。


behavior で希望している機能は入力値チェックとかだけでは無くって、

<input type="text" name="date" v:behavior="dropdowndate" />

などとした場合に最終的なHTMLとして

<input type="hidden" name="date" />
<select name="date/year" onchange="hiddenset('date',this.form);">
  <option>2001</option>
  <option>2002</option>
  ....
</selct>
<select name="date/month" onchange="hiddenset('date',this.form);">
....
</selct>
<script>
function hiddenset(name,form){
 ...
}
</select>

みたいなのをまとめてはき出す、てのもやりたいのです。ie DHTML の Behaviorが一番イメージに近かった。
だから僕が必要なのはやっぱりHTMLタグの拡張=カスタムタグなんだと思います。


phpをおいていく方法」でわかりやすい方法でWordPressを見てみましたが、たぶん「必要な部品をすべて関数化する」ってことだと思うんですが、引数の指定方法とかPHP形式になるのが微妙かな、と。特に、先ほど説明した behavior のような仕組みを作る場合とか。<? wedget_date("name",$date) ?> だと「その部分にDreamweaverやブラウザ上では何も表示されない」のが嫌なのです。(ちなみに現在はそのやり方でやってます)
カスタムタグだと何も表示してくれないんで同じなんですが…

テンプレート等のプレゼンテーションにデータ構造が依存するのではなく、データ構造にプレゼンテーションを依存させるという発想だ。

ということですが、一番違和感を感じたのがコンディションのところ。つまり http://phpoot.sourceforge.jp/zogan/ar01s07.html の部分ですが、

 ***PHP
$model['table']=$table; // array(1,2,3);
 ***HTML
<p var:cont="{table}"></p>

という感じで作っていたものに「空の時はその旨を表示してくれ」という変更要求が入ったとき、Zoganだとたぶん

 ***PHP
$model['table']=$table; // array(1,2,3);
$model['table_empty']=empty($table);
 ***HTML
<p var:cont="{table}"></p>
<p var:cont="{table_empty}">空です</p>

だと思うんですが。僕が求めているテンプレートはこういう場合、PHPに変更を加えずに

 ***HTML
<p var:cont="{table}"></p>
<p var:cont="{table}" var:condition="empty">空です</p>

みたいな感じで設定できるものなんです。

具体的には、ちょっとしたイントラの画面変更とか、かな。「ここのHTMLかえたら変わるから自分でやってよー。」

という投げ方をしたい場合、こういう仕組みが用意されていないと難しいかな、と。
まあ、こんなことを言い出すとタグがどんどん多様複雑化していってXSLTになっていくわけですが…
(追記: <p var:cont="{not:table}>空です</p> みたいなのができるらしいです… function の存在を忘れてました汗)

あと「僕が作りたい物」にJavaScriptによるいろんな機能は絶対必要なんで…それをサポートしてくれる機能がないとやっぱり困ります。


ということで設計思想で食い違いがあるようなので、誰か別の物を作ってくれる人が現れるのを待つ方向で… behavior がMozillaで使えれば(;_;)
PHPカスタムタグは、「既存のタグを乗っ取る」機能がないのが辛いです。behaviorは属性で設定したい…。でコードを覗いてみるといろいろ違和感が(--;)