トップページ⇒php
930コメント657KB

コンテンツとデザインの分離

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/27(日) 17:59ID:6pK8snWA
ASPでもPHPでもPerlでもJavaでも形こそ違えど結局は可変部を吐き出すための
<%〜%>やらprint文の嵐になってしまう。

「HTMLはHTML、プログラムはプログラムと完全に分離する方法はないものか。」
を話し合うスレッドです。
0002名無しさん@お腹いっぱい。2001/05/27(日) 18:46ID:PLEgfcrY
外部htmlファイル読み込みで片付くものと思われ。
0003名無しさん@お腹いっぱい。2001/05/27(日) 19:07ID:rsikQ/Ns
<%〜〜%>でいいじゃん
0004名無しさん@お腹いっぱい。2001/05/28(月) 06:25ID:QyrSaBKA
テンプレートをつくって、置換するのはどうよ。

<html>
<head>
<title>%%%%TITLE%%%%</title>
</head>

こんな感じのやつで。あとで%%%%TITLE%%%%を変数と置換。
>>2がいうとおり、このテンプレートを外部から読むか、内部に入れるかは自由。
0005名無しさん@お腹いっぱい。2001/05/28(月) 11:45ID:/loPusng
XML と XSL で分ければ?
0006名無しさん@お腹いっぱい。2001/05/28(月) 13:11ID:yQtftbTo
おいらは内部派だからprintの嵐大好きだよ
0007名無しさん@お腹いっぱい。2001/05/28(月) 13:19ID:XZfJcTNc
PerlのHTML::Templateは?
あれ好きなんだけど。
0008名無しさん@お腹いっぱい。2001/05/28(月) 14:39ID:9UeTzpnc
PerlのText::Templateでやってた...
HTML::Templateの方が便利かな?
試してみよっと
000912001/05/28(月) 18:15ID:ucUrq.A6
なるほど、PerlにはHTML::Templateなるものがあるんですね。
これは便利そうです。
#でも、最近はPerl使ってないんだよねぇ。

Javaあたりだとどんな方法があるでしょうか?
JSP + Beanでゴニョゴニョ。なんてまどろっこしい方法なんて誰も使いませんよね(^^;

自分はXMLCに注目しているのですが、HTMLの操作をすべてDOMで行わなければ
ならなかったりで、今ひとつ食指が動きません。
001012001/05/28(月) 19:17ID:ucUrq.A6
あ。PHPだとこんなのあるらしいですよ。

PHP4テンプレートクラスライブラリ
ttp://zato.nu/tmpl/

これもタグ置換型ですね。
0011名無しさん@お腹いっぱい。2001/05/29(火) 03:46ID:???
HTML::Templateって、それ自体がなんか言語っぽくなってて、
なんか新しい言語を覚えなきゃいけない風でやなんだけど、実際どう?
友人が使ってるのをちょっと見ただけだからよくわからんが。
0012名無しさん@お腹いっぱい。2001/05/29(火) 16:32ID:pjNjykSQ
JSP でコードと HTML がごちゃごちゃしてきたら拡張タグライブラリ
を作る。

<oresama:valueOf name="foo" />

みたいなの。JSP だと結構うまいこと分離できるよ。多少の知識は
いるけどね。
0013名無しさん@お腹いっぱい。2001/05/29(火) 18:53ID:oi4kyUtI
>>11
テンプレートのタグ?それともメソッドの使い方?
どっちにしてもそれほど難しくないよ。
0014名無しさん@お腹いっぱい。2001/05/29(火) 19:01ID:99dLOuS2
HTML::Template
http://search.cpan.org/doc/SAMTREGAR/HTML-Template-2.2/Template.pm
0015名無しさん@お腹いっぱい。2001/05/30(水) 02:43ID:n7P1SKLk
PerlのHTML::Templateは、コメントタグ形式でも表記できるのが
面白いと思った。
<td>名前</td><td><TMPL_VAR NAME=name></td>は
<td>名前</td><td><!-- TMPL_VAR NAME=name --></td>でもオッケー
0016Pマン2001/05/30(水) 03:55ID:owRJ.xHA
class HTMLClass {

 var $htmldata ;

 function HTMLClass( $htmlfile ) {
  $htmldata = file( $htmlfile ) ;
  $this->htmldata = "" ;
  for( $ii=0; $ii<count( $htmldata ); $ii++ ) {
   $this->htmldata .= $htmldata[$ii] ;
  }
 }

 function output( &$data ) {
  $str = $this->htmldata ;
  reset( $data ) ;
  while( list( $key, $val ) = each( $data ) ) {
   $str = ereg_replace( "@" . $key . "@", $val, $str ) ;
  }
  echo $str ;
 }
}

サンプルクラス。

$tmp = new HTMLClass( "a.html" ) ;
$repdat["data"] = "hogehoge" ;
$tmp->output( $repdat ) ;

@data@ を hogehoge に置換。もっと短く出来ると思うけど
適当にこんな感じなのはいかがでしょう?
0017名無しさん@お腹いっぱい。2001/05/30(水) 22:36ID:aom7mYQI
Dreamweaverのテンプレートは?
編集可能領域だけをPerlから変更するようにして使っているよ。
0018152001/05/31(木) 09:31ID:DL2pokUM
>>17
それもいいね。
ファイルを1行ずつ読んで、Dreamweaverのコメントにマッチしたら
置換する、というやり方でしょ?

俺はPerLのHTML::TemplateでつかうHTMLファイルを
.tmplにして、それをDreamweaverで編集してた。
モジュールのインストールがいらないから、そっちの方が良いかも。

ただ、疑問なのは、例えばテンプレート内にあるフォームの中に
データを埋め込むとき。
<input type="text" name="sample" value="ここに埋め込む">

こんな時は、ソース編集でvalueにDreamweaver形式のコメントを
打つの?
0019ちょこら2001/05/31(木) 16:26ID:zuNYGVLg
>>17
お、俺もそれでやってる。
あと、>>18みたいなケースのときはコメントを置換するようにしてる。
<!-- hoge -->
を$hogeに置換すんの。
自分でライブラリ作ったから同じスクリプトを
テンプレートかえるだけで使いまわせていいよ。
0020172001/05/31(木) 17:10ID:iOzcc6dM
テンプレートのコメントは利用せず、編集領域内に
{$hogehoge;}と入れて、これを置換している。

あまりCGIが得意じゃないんで、恥ずかしいけど
↓こんな感じ。(藁

$postdata{ "hoge" } = $line[ 1 ];
$postdata{ "hoge2" } = $line[ 2 ];

print insertTemplate( './main2.htm', %postdata );

sub insertTemplate
{
local( $filename, %form ) = @_;
local( @lines, $line );

open( FILE, "< $filename" );
@lines = <FILE>;
close( FILE );

$line = join( '', @lines );

$line =~ s/\{\$(.*?)\}/$form{ $1 }/gs;
$line;
}
0021名無しさん@お腹いっぱい。2001/06/15(金) 12:53ID:erdVYa/Y
とりあえず、これ読んどけ
http://jakarta.apache.org/velocity/ymtd/ymtd.html
0022名無しさん@お腹いっぱい。2001/06/15(金) 15:11ID:6nOh67xE
Perl信者はこうじゃなくちゃ!

sub template_expand{
    my($filename) = @_;
    my($text, $trans);
    local $/;
    local *IN;
    local *echo = sub { $trans .= join "", @_; };

    open IN, "< $filename" or return;
    $text = <IN>;

    $text =~ s{<\?perl\s+(.*?)\s*\?>}{ eval($1);$trans }egsm;
    close IN;
    return $text;
}
0023名無しさん2001/06/21(木) 18:42ID:fZd90uYU
本命はCocoonでしょ、やっぱり。
0024名無しさん@お腹いっぱい。2001/06/21(木) 18:51ID:???
0025sage2001/06/22(金) 16:25ID:FGxLT2Ws
FastTemplate使え。Perl用とPHP用がある。
0026252001/06/22(金) 17:03ID:???
sage失敗ごめんなさい。↓PHP版の配布サイト
http://www.thewebmasters.net/php/
0027名無しさん@お腹いっぱい。2001/06/22(金) 19:22ID:???
XSLTでマルチクライアントなんてほんとにできるんですか?
0028名無しさん@お腹いっぱい。2001/06/22(金) 22:06ID:QfivNl3k
このスレッド名、妙な感じがするのは私だけかな〜。
デザインとロジックの分離じゃなくて?
■ このスレッドは過去ログ倉庫に格納されています