phpでSmartyを使う方法

phpでテンプレートエンジンSmartyを使う方法です。

Smartyはphpのテンプレートエンジンの中で現在最も普及している(であろう)もので、解説サイトなども多数存在するのでテンプレートエンジン初心者の方でも簡単に使用できると思います。

Smartyを使う目的

Smartyを使う目的は簡単に言ってしまえばhtmlソースとphpスクリプトの分離にあります。

phpは優れたスクリプト言語でhtmlソースの中に直接スクリプトを書き込め、htmlを知っている方なら簡単に習得できます。(他にもASP、JSP、erubyなどがhtmlソースの中にスクリプトを記述する事ができます)

その為コードの保守性が低くなり、少しの修正で複数のページを修正する必要がでたり、同じようなスクリプトを多数のページに記述する羽目になります。

コードの保守性を高めるためにはスクリプトを各ページごとではなく一箇所で管理すればよいのですが、その場合ページ内にスクリプトを記述する方法だと画面遷移に対応する事ができなくなります。

Smartyなどのテンプレートエンジンを使用すると画面(表示したページ)でスクリプトを実行するのではなく、スクリプトで画面(表示するページのhtmlソース)を呼び出す形になりますので上記のような問題にも解決できます。

また、Smartyを使う目的としてはプログラムにくわしくないWEBデザイナーなどでもテンプレートをいじることによりhtmlを修正できるようになり、プログラマーとデザイナーの作業分担が明確になります。

とりあえずSmartyを使ってみる

smartyの公式サイトから最新のSmartyをダウンロードしてきてください。
ダウンロードしたファイルを解凍し、ディレクトリ名を'Smartyなどに変更してサーバー上の任意の場所にアップロードしてください。

またテンプレートファイルの保存場所も設定しておきます。
tmpというディレクトリを作成し(先ほどアップロードしたSmartyディレクトリと同じ階層がわかりやすいです)その中にtemplates、templates_c、configs、cacheというディレクトリを作成してください
templates_cのパーミッションは666に設定してください。

次にphpファイルを作成します。

<?php
// Smartyライブラリを読み込む
require'Smarty/libs/smarty.class.php';
	
//Smartyクラスを継承するサブクラス(SmartyCls)の作成
class SmartyCls extends Smarty {
	
	//コンストラクタで初期設定を行う
	function SmartyCls(){
	
		$this->template_dir= "tmp/templates/";
		$this->compile_dir= "tmp/templates_c/";
		$this->config_dir= "tmp/configs/";
		$this->cache_dir= "tmp/cache/";
	
	}
	
}
$smarty = new SmartyCls();
 
$smarty->assign("hensu","hogehoge");
$smarty->display("index.tpl");
?>

このようなphpファイルを作って先ほどアップしたSmartyディレクトリと同じ階層にアップしてください。

次にテンプレートファイルを作成します。
私は{$hensu}です。と記述したファイルをindex.tplと名前を付け先ほど作成したtmp/templatesディレクトリ内にアップしてください。

phpファイルの説明ですが、
classの設定はお約束なのでそのまま記述していただいて結構です。(色つきのところが先ほどアップしたディレクトリになるように設定してください。)

$smarty->assign("hensu","WEBクリエイター");ですがテンプートのhensuという変数に"WEBクリエイター"という文字列を入れるという命令になります

$smarty->display("index.tpl");は表示するテンプレートファイルを指定します。
今回は先ほど作成したindex.tplを指定します。

作成してアップしたphpファイルにアクセスすると
私はWEBクリエイターです。と表示されます。

お約束事さえ覚えてしまえばとても簡単です。
興味のある方は一度試してみてください。

関連エントリー

smartyで文字を連結する

スポンサードリンク

«Firefox 2.0 Beta 1 リリース | メイン | web標準の日»