ITで遊ぶ

htmltemplate for PHP

PHPといわず、Webプログラミングをしていると自分がバカになった気がするのが、print,echo文の羅列。何度も何度も何度もechoを書いていると「もうちょっとなんとかしよーよ。」と思う。
誰もが思うのが、htmlのスケルトン(テンプレート)を変数で埋めてくれるツール。これが世に言うテンプレートエンジン(template Engine)である。この分野は、もう、ネコも杓子もSmartyを使うことが約束のようになっている。
ただ、内部でなにをやっているかは、ここまで大規模だと簡単にはわからない。

小規模なシステムを作る時にincludeするだけで済みそうな、簡単なテンプレートエンジンをずいぶん探した。htmltemplate for PHPを見つけてなかったら、自分でダサいテンプレートエンジンを作っていたに違いない。

著者は、鮎川寛氏、最近はこのプログラムにはかかわりたくないらしく、ライブラリーこそsource forgeにアップされていますが、ドキュメントはご自身のサイト「php開発日誌」はすでになく、webarchive上に残っています。ユーザーは結構いて、あちこちに使い方がアップされている。よく考えられたライブラリーです。今後、私はかなり使いそう。

ものを入手するのは、ここ。 動作に必要なものはhtmltemplate.incだけ。
ライブラリーにふくまれているtest.html,test.phpを動かせば、なに書けばいいのかわかります。ループロジックなどはコメントタグとして書くことになってます。

samletest.php, sampletest.htmlはhtml selectタグの出し方を説明しています。

以下、極めて簡単な使い方ガイド

もっともシンプルなパターン

テンプレートファイル:hoge.html

<html>
<body>
<h1>{val hogehoge}</h1>
</body>
</html>

PHPコード

<?php
require_once(“htmltemplate.inc”);
$val[“hogehoge”] = “立派な人です”;
htmltemplate::t_inclde(“hoge.html”,$val);
?>

1行リスト表示(繰り返しをふくむ)

テンプレートファイル:list.html

<html>
<body>
<h2>{val title}</h2>
<ol>
<!–{each entries}–>
<li>{val entries/item}
<!–{/each}–>
</body>
</html>

PHPコード

<?php
require_once(“htmltemplate.inc”);
$val[“title”] = “好きな魚”;
$val[“entries”] = array(“鮭”,”鯛”,”鰻”,”鮪”,”鯖”);
htmltemplate::t_include(“list.html”, $val);

変数により表示したり、しなかったり

テンプレートファイル:secret.html

<html>
<body>
<h2>秘密の地図</h2>
<!–{def member}–>
<a href=”http://otakara.yume-javea.jp/map.php”>お宝マップ</A>
<!–{/def}–>
</body>
</html>

PHPコード

<?php
require_once(“htmltemplate.inc”);
$val[“member”] = “Y”;
htmltemplate::t_include(“secret.html”, $val);
?>

なお、結果を文字列として受け取るならば、最後の一行を
$rep = htmltemplate::t_buffer(“secret.html”, $val);
とする。

テンプレート以外について

テンプレートの一部がデータによって大幅に変わる場合、””ダブルクオーテーションとヒアドキュメントの利用を考えてみるべきでしょう。
“$hogehoge は素晴らしい”;
$hogehogeに値があれば、置き換わります。
これを{val hogehoge}に代入するという方法があります。

関連記事

  1. Googleの検索結果をスプレッドシートに抜く方法

  2. カラーミーAPIを使う(発送データ作成)

  3. Linux Kernel Map

  4. PIC16F1705

  5. 多くのテキストファイルをWordPressの投稿に書き込む

  6. JavaScriptでグラフィック(3)

  7. PHPのクラスの継承

  8. 静的HTMLに他HTMLを読み込む方法

記事をプリント