2006年01月20日

Smartyとは

PHPで使えるテンプレートエンジンです。

と、一言で言ってしまえばそれで終わってしまいます(汗)。

ここで言うテンプレートとは、PHPで表示する画面、いわゆるHTMLです。例えば、データベースからデータを取得して画面に表示する。入力フォームから入力された内容を確認画面で表示するといったことは、Webの開発では必ず出てきます。この時、最終的に表示するHTMLを、あらかじめ『テンプレート』として用意しておきます。そして、smartyは、そのテンプレートを読み込んで、それに必要な表示データをはめこんで、表示します。
テンプレートと言っても、そう難しいものではなく、いわゆるHTMLそのまんまと言ってもいいくらいです(ちょっと言い過ぎかな・・・)。

PHPと言っても、その中にHTMLはそのまま書けるし、<? ?> で囲めば、PHPのプログラムが書ける。いちいちテンプレートなんて面倒なんじゃない?

確かにそうかも知れません。
入力された内容を表示するのだったら、<?=$_POST[$name]?> とかって書いちゃえばいいんだし。
面倒じゃん・・・

この程度なら、そう大差はないかもしれませんが、テーブルの行の繰り返しとなると

<?
for ($i = 0; $i < $max; $i++) {
?>
<tr>
<td><?=$code[$i]?></td>
<td><?=$name[$i]?></td>
</tr>
<?
}
?>

となって、HTMLとPHPコードが交互に出てきて、だんだん複雑になってきます。

この『複雑』が問題なのです。

もし、あなたが、Webデザイナーだったら、一旦PHPのプログラムが入ったページのデザインを変更しますか?
なんだか、わけのわからないコードがいっぱい。
とても、ドリなんかで編集はムリだと思います。

と、なると、頼れるのは、Webプログラマー。

もし、あなたが、Webプログラマーだったら、デザインの変更をしますか?
えっ!そんなん、出来るわけないじゃないですかね。
そういう私も、Webプログラマーの部類に入てまして、出来るわけないと言いつつも、デザイナーさんはもう既に触れない状態になってしまっているので、やらざるを得ない。こうした経験をもう何度となくしてきました。

つまり、

一旦、プログラムは組み込まれると、後の面倒はすべてWebプログラマーの仕事

と言っても過言ではないでしょう。

1つのファイルの中に、デザインとプログラムが混ぜこぜになっているから、そういったことが起こるわけで、

だったら、プログラム(PHP)とデザイン(HTML)を分けてしまえばいいんです!!

それが、テンプレートであり、smartyなんです。


分かっていただけましたか?^^;

2006年01月20日 18:35 |  1.smartyとは?


トラックバック

このエントリーのトラックバックURL:

コメント

わかったような、わからないような・・・
わからない方がはるかに上回ってます(笑)
そもそも車のブログ?かと思い、覗いたくらいですから(汗
なんだか難しそうですが、頑張ってくださいね。

cerise : 2006年01月24日 22:12

はじめまして。

個人でサイト構築を完結してしまうには考える必要のないテンプレート概念。
ただ、サイトの規模などが大きくなってくるとやはりタスク配分しないとどうにもこうにも…ってことよくあります。
当方も現在プログラマサイドなので、デザインとの分業について頭を抱えることが少なくありません。
テンプレートの概念はすばらしいと思う反面、smarty等にしても少なからずデザイナーさんに覚えていただかなくてはならない構文などもあります。
PHPなどを多用するページ製作においては、うちは徹底的に+smartyでいきます!といったスタイルであればいいのですけどね。
確かに便利で認知度もそこそこありますが、もうすこしスタンダードな感じにならないと全社規模でデザイナーたちにこれらを教育するのもめんどーっていうか…
ちょっと難解な記述があると「わかりません、難しそう…」って…なっちゃいますからね…
タッグ程度でチームつくるにはいいんですけどね^^

HPとか簡単につくれちゃう現在。プロとしてWEBに携わる人間のリテラシーがもっと向上していくことを願っております。
ってことでこういった有用な技術の啓蒙応援しております!がんばってください!

sweety : 2006年07月27日 14:43

sweetyさん、はじめまして。

なかなかデザイナーさんに構文を覚えてもらうのは難しいです。ウチも、デザイナーさんには、普通に作ってもらい、後で、プログラマーがsmartyの構文を入れます。
そうしても、デザインとプログラムは分離されてますので、後で修正があっても、ある程度、デザイナーが修正出来ます。

PHPの中に入れてしまうと、どうしてもロジックの関係上、HTMLが分断されます。となれば、ここのHTMLコードはどこに書いてあるんだっけ?と見つけるですら、ひと苦労する時もあります。後々のことを考えると、テンプレートは便利だと思います。

応援ありがとうございます。sweetyさんも、がんばってください!

imai : 2006年07月27日 19:37

はじめまして、まさにこれからSMARTYをはじめます。
なんとなくSMARTYの位置づけがわかったようなぁ。
わからなかったようなぁ。

また機会がありましたらお邪魔します。
失礼しました。

今からSmarty : 2007年08月01日 17:04

はじめまして。
お尋ねしたいことがあります。

phpのプログラムを使用しているのですが、
テンプレートのファイルを全て下記のように
utf-8にエンコードしています。

しかし、ブラウザに何も表示されなくなる場合があり、
エンコードを確認するとeuc-jpとなっています。それを
手動でutf-8に変更してあげると、ブラウザに日本語の
文章がきちんと表示されます。

なぜこのような現象(勝手にeuc-jpに変換されてしまう)が起こるのか、お分かりになる方が
いらっしゃるようでしたらヒントだけでもおしえていただけ
ませんでしょうか。よろしくお願いします。

choko : 2007年12月14日 01:01

こんばんは。

テンプレートファイル自体は、utf-8で保存されてますでしょうか?

文字コードは、metaタグでの指定とともに、そのコードで保存する必要があります。

imai : 2007年12月15日 00:54

ありがとうございました。うまくいきそうです。

choko : 2007年12月15日 10:44

コメントしてください




保存しますか?