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は属性で設定したい…。でコードを覗いてみるといろいろ違和感が(--;)