HTMLのテンプレート

デザイナーとプログラマーが仕事を分担するという視点で考えると

  • 「デザイナー用HTML(テンプレート)←→プログラマー用HTML(PHPとか)」の可逆変換が必要(というか変換しないですむor表示時に自動変換ならそれが一番)。
  • デザイナー用HTMLはDreamWeaver等のWYVIWYGなエディターで無理なく編集可能
  • テンプレート用プログラム記号の他にサンプル文字列が設定できる
  • JavaScriptとの連携…JavaScriptはどちらが担当する?

ということで、目をつけているのがJava用のカスタムタグとZOGANPHPカスタムタグというものもあるし。
XMLとして解釈できる」と、テンプレートエンジンを作る方もうれしいし、たぶんDreamWeaverのエクステンションを作るのも簡単そうだ。以前PHPを埋め込むエクステンションを書いたことがあったけど、DreamWeaverのエクステンションはHTMLを「DOMで処理する」「正規表現で処理する」くらいしか手段が無くって(そりゃそうだ)、「あるPHPコードがおかれているかおかれていないか」を判定するためのコードをJavaScriptで書くって場合とか、すごいつらい。円マークが連続するする。その点DOMで処理できると安心ぽい。

で、ZOGANは実に良い線を行っていると思うのだが、JavaScriptとの連携がちょっと惜しいなぁ。
ちなみにZOGANというのはRubyAmritaを元に考えられたXMLテンプレートエンジンで、<textarea var:cont="{var}"></textarea> で、textarea内にvarの値が展開されるといったようなもの。属性値の書き換え機能もあって<input type="text" value="{var}" />でvalueにvarの値が入る(この書き方よりも新仕様として考察されている <input type="text" value="sample" a:value="{var}" />みたいな書き方の方が好きだけど…)Amritaのidタグを使った設定ってのは、idタグをjavascriptで使いたいときとかに困るんだな…。
で、例えば ZOGAN で input タグの onblue で入力内容の検証を行いたいときとか <input type="text" onblue="{dateinput_onbluescript}" /> みたいにテンプレートを設定しなければいけなくなる。思うにZOGANで、「このタグをカスタムタグとして処理」みたいなタグがあって、<input type="text" v:behavior="dateinput" /> みたいに書いたときに <t:dateinput type="text" /> みたな「カスタムタグ」として処理されるとうれしいだろうな(内部的には <php $template->addTag( "dateinput", array('type'=>'text','_overwrited'=>array('tagName'=>"input") ); ?> てな感じにコンパイルされるのかな… )。
あと、テキスト内の改行を brタグ にする(nl2br)みたいな処理もほしいな。でも同じ複数行値でも textarea 内だとbrタグはいらないけど、p タグ内だと改行タグが必要になったりするし…この切り分けはプログラマーがやるべきか、デザイナーがやるべきか…。やっぱり var:cont=text とか属性値で処理するんじゃなくて <v:value-of select="text" filter="nl2br" />みたいなカスタムタグ形式の方が良さそうか。それとも、$templateEngine->setFilter('text','nl2br') みたいにテンプレート展開用プログラム内でこの処理を行うべきか?
あ、ZOGANで %text% とかをテキストノード中に使うと text の値を表示してくれる機能とかもほしい。もちろん<span var="text" var:omit-tag="yes"></span>とかで処理できるわけだけど…長い。PHPカスタムタグだと %text% で表示してくれるけど…コンパイルされたコードは<?=$text ?> になっちゃう。タグがエスケープされてない。やっぱりエスケープしてほしいし。ZOGAN用の非XMLプリプロセッサにかければいいのかな…JavaScriptとの連携を考えると、「この行を無視」みたいなのもほしいし。
まあZOGANを詳しく調べた訳じゃないので、もしかしたら全部できるのかもしれないなぁ。どうしてドキュメントが英語しかないんですか(;_;)>id:harux さん