Classic ASP でマスターページのようなテンプレートを利用する
質問させて下さい。
Classic ASP でASP.NETのマスターページのような共通テンプレートを利用する時には、
(1)ヘッダフッタにわけて#includeを使う
<!-- #include file="../include/header.asp" -->
<% Response.Write "コンテンツ部分" %>
<!-- #include file="../include/footer.asp" -->
(2)テンプレートを用意しておきContentsの部分をReplaceする
○temlate.html
<html>
<head><title>タイトル</title></head>
<body>
{{Contents}}
</body>
<html>
○sample.asp
'テンプレ読み込み
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile("template.html", 1, False)
Do Until ts.AtEndOfStream
strTemplate = objFile.ReadAll
Loop
'コンテンツ部作成
strContents = "コンテンツ部分"
'HTML吐き出し
Response.Write Replace(strTemplate,"{{Contents}}",strContents)
(3)2のようにテンプレを用意するがReplaceはしない
○sample.asp
'テンプレ読み込み
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile("template.html", 1, False)
Do Until ts.AtEndOfStream
strTemplate = objFile.ReadAll
Loop
'テンプレ分解
arrTemplate = Split(strTemplate,"{{Contents}}")
Response.Write arrTemplate(0) 'ヘッダ出力
Response.Write "コンテンツ部分"
Response.Write arrTemplate(1) 'フッタ出力
1は古い本などに載っているやり方で、今いじっているソースもそうなっているのですが、テンプレートのhtmlを編集するのが困難なのでやめたいと思っています。
2は{{}}の部分を変えていけばいろいろ応用が利いて便利そうですが、コンテンツ部分を変数に保持したりReplace関数を多用したりするのは負荷が大きくならないか心配です。
3は今書きながら思いついたので適切かどうかわかりません。(読み込みと分解の方法を適切にすれば良いような気もしますが…)
いったいどのようにするのが適切なのでしょうか。
ご教示のほどよろしくお願い致します。
お礼
ご回答有難うございます。 が、質問にも書きました通り、「すでに質問が出来上がっているテンプレ」が 欲しい訳ではないのです。 100質でこういう質問をしたら?という雛形が欲しいのですが…意図伝わりますでしょうか。