Smartyの使用感?
SmartyをLinuxマシンのXAMPPの中にインストールして、現在Smartyをどんどん使っている途中になります。
Smartyの使用感としては、デザインとロジックがキレイに分離したような気がして結構気に入っています。
とはいっても、自分でロジックを組んでいるプログラムについては分かるんですが、どっかからライブラリを
引っ張っているプログラムについてはロジックが分からずに、どう対処すればいいかが分からずに
手こずったりしています。
Smartyを使ってサイトを作るための準備
すでにSmartyを使っている人にとっては、当然かもしれませんが、基礎編ということで、細かく書いてみようと思います。
まず、サイトのドキュメント・ルートに必要なフォルダを作成します。必要なフォルダは、templates, templates_c, cacheの
3フォルダ。この3つのフォルダをmkdirするなりして作成します。ここで、templates_cフォルダは、Apacheが書き込みを
行うフォルダになりますので、パーミッションを0777など適切なものに変えておきましょう。
ここから先がサイトのページ作成になってきます。
まず、ドキュメント・ルートにトップページを作ってみます。ということで、ドキュメント・ルート上に
index.phpというファイルを作り、以下のように編集します。
index.php
- <?php
- require ’Smarty.class.php’;
- $smarty = new Smarty;
- $smarty->compile_check = true;
- $smarty->assign(“SiteName”,”hogehoge”);
- $smarty->assign(“SiteUrl”, ”http://sample.com”);
- $smarty->display(‘index.tpl’);
- ?>
このファイルが、ページのロジック部分を担当するところ。ここにどんどんロジックを書いていき、
実際のページに出力させたいデータについては、$smarty->assign(“var”,”hoge”);のようにして、
var変数にhogeというデータをセットしていきます。
次に、実際に出力されるデザイン部分の作成です。デザイン・ファイルは、templates/index.tplのようにして、
templatesフォルダ内に作ります。index.tplのファイル名については、上のロジック部分でdisplayで指定したファイル名
になるみたいです。なお、拡張子はtplが一般的みたいなんで、それに従いましょう。
index.tpl
- <html>
- <head>
- <title>{$SiteTitle}</title>
- </head>
- <body>
- <h1><a href=”{$SiteUrl}”>{$SiteTitle}</a></h1>
- </body>
- </html>
こんな感じで、ほとんどが普通のhtmlと同じように書くことができます。あとはところどころ、index.php側のロジック部分で定義
した変数を使いたいときには、{$var}とすることで、可能になります。
これをSmartyがコンパイルしたときに、上の{$var}は、hogeに展開されます。
疑問点
ロジック部分で、$smarty->display(‘index.tpl’);とやって、index.tplを呼び出している
けど、このindex.tplのファイルは、どのような探索順序で探索しているんだろうか?というのも、ドキュメント・ルートに
ファイルを置いている間は、問題なく動いたんだけれども、ドキュメント・ルート下に、mailformというフォルダを作って、
同じようにやろうとしてもうまくいかなかったんで、ここのところを知っている方がいたら教えてほしいですね。
まとめ
Smartyを使うことの一番のメリットは、デザインとロジックの分離。分離すると同時に、管理するべきファイルの数も
増えてしまうので、できるだけ規約に沿った形でのファイル管理が必要になるでしょう。業界標準ってやっぱり重要ですね。
あとは、疑問に思っている人もいるかもしれませんが、最初に作成した3つのフォルダのtemplates_cフォルダは、
Smarty側がコンパイルしたテンプレートが保存されているようです。cacheは、名前通りキャッシュ用のフォルダだと思いますが、
cacheのほうはよく分からないです。
参考ブログ
- 使い方 – むずかしいことはわかりません。
- smartyの使い方を無料で勉強できるサイト | MRC株式会社
- Smarty(基本編)& PEAR Pager – Mind Local Web
- HTML_QuickFormの使い方 – FLASH+αのメモ帳
- Smarty 配列の中身を表示する方法 : 管理人の生活日誌 | beatmaniaやSEOやプログラムとか
- PHPの階段 ? MobilePictogramConverterの使い方(PEAR::Net_UserAgent_Mobileとの組み合わせ)
- サイト制作者の日記 ? Blog Archive ? Smartyのプラグイン
- Smartyの使い方 – SystemGathering
関連記事
- XAMPP for LinuxにSmartyをインストールする。
- Smartyを使ったサイト制作
- XAMPP for LinuxをVineLinuxにインストールさせた
- [フリーソフト] DropBox
- CentOSのインストール後に行ったこと一覧
[PR]
トラックバック
http://yamablo.com/2009/05/23-172603.php/trackback


6月 2nd, 2009 at 10:03 PM
Smartyを使ったサイト制作
現在、SmartyとmixiのOpenIDを利用したウェブサイトを制作中です。ということで、Smartyもそれなりに 使いこなしてきた(?)つもりなんで…
1月 13th, 2010 at 1:02 PM
私もSmarty勉強してるところでして、ブログ参考にさせていただきました。ありがとうございます。
ブログ中にも出ましたが、テンプレートへのパスは、以下のようにsmartyオブジェクトのプロパティで指定するようです。ちなみに、コンパイル済み(TPLからPHPへの変換)のディレクトリ指定もこんな感じでできるようです。
$obj = new Sarty();
$obj->template_dir = “/path/to/templates/”;
$obj->compile_dir = “/path/to/templates_compiled”;
また、テンプレートディレクトリはウェブサーバーから見えない場所に置いた方がいいとのこと。最近EC CUBEというSmartyベースのECサイト用のオープンソースフレームワークのソースをちょこっと見た事があるのですが、具体的には以下のようなディレクトリ構成になっていました。
- html
– index.html (ドキュメントルート)
– dir/
- data
– template (smartyテンプレート用)
— index.tpl
— dir/
– template_c (コンパイル済みsmartyテンプレート用)
– etc.
以上、参考になれば幸いです。