Smartyの使用感?

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

SmartyをLinuxマシンのXAMPPの中にインストールして、現在Smartyをどんどん使っている途中になります。

Smartyの使用感としては、デザインとロジックがキレイに分離したような気がして結構気に入っています。

とはいっても、自分でロジックを組んでいるプログラムについては分かるんですが、どっかからライブラリを
引っ張っているプログラムについてはロジックが分からずに、どう対処すればいいかが分からずに
手こずったりしています。

Smartyを使ってサイトを作るための準備

すでにSmartyを使っている人にとっては、当然かもしれませんが、基礎編ということで、細かく書いてみようと思います。

まず、サイトのドキュメント・ルートに必要なフォルダを作成します。必要なフォルダは、templates, templates_c, cacheの
3フォルダ。この3つのフォルダをmkdirするなりして作成します。ここで、templates_cフォルダは、Apacheが書き込みを
行うフォルダになりますので、パーミッションを0777など適切なものに変えておきましょう。

ここから先がサイトのページ作成になってきます。

まず、ドキュメント・ルートにトップページを作ってみます。ということで、ドキュメント・ルート上に
index.phpというファイルを作り、以下のように編集します。

index.php

  1. <?php
  2.     require ’Smarty.class.php’;
  3.     $smarty = new Smarty;
  4.     $smarty->compile_check = true; 
  5.     $smarty->assign(“SiteName”,”hogehoge”); 
  6.     $smarty->assign(“SiteUrl”, ”http://sample.com”);
  7.     $smarty->display(‘index.tpl’); 
  8. ?> 

このファイルが、ページのロジック部分を担当するところ。ここにどんどんロジックを書いていき、
実際のページに出力させたいデータについては、$smarty->assign(“var”,”hoge”);のようにして、
var変数にhogeというデータをセットしていきます。

次に、実際に出力されるデザイン部分の作成です。デザイン・ファイルは、templates/index.tplのようにして、
templatesフォルダ内に作ります。index.tplのファイル名については、上のロジック部分でdisplayで指定したファイル名
になるみたいです。なお、拡張子はtplが一般的みたいなんで、それに従いましょう。

index.tpl

  1. <html>
  2.     <head>
  3.         <title>{$SiteTitle}</title>
  4.     </head>
  5.     <body>
  6.         <h1><a href=”{$SiteUrl}”>{$SiteTitle}</a></h1>
  7.     </body>
  8. </html>

こんな感じで、ほとんどが普通のhtmlと同じように書くことができます。あとはところどころ、index.php側のロジック部分で定義
した変数を使いたいときには、{$var}とすることで、可能になります。

これをSmartyがコンパイルしたときに、上の{$var}は、hogeに展開されます。

疑問点

ロジック部分で、$smarty->display(‘index.tpl’);とやって、index.tplを呼び出している
けど、このindex.tplのファイルは、どのような探索順序で探索しているんだろうか?というのも、ドキュメント・ルートに
ファイルを置いている間は、問題なく動いたんだけれども、ドキュメント・ルート下に、mailformというフォルダを作って、
同じようにやろうとしてもうまくいかなかったんで、ここのところを知っている方がいたら教えてほしいですね。

まとめ

Smartyを使うことの一番のメリットは、デザインとロジックの分離。分離すると同時に、管理するべきファイルの数も
増えてしまうので、できるだけ規約に沿った形でのファイル管理が必要になるでしょう。業界標準ってやっぱり重要ですね。

あとは、疑問に思っている人もいるかもしれませんが、最初に作成した3つのフォルダのtemplates_cフォルダは、
Smarty側がコンパイルしたテンプレートが保存されているようです。cacheは、名前通りキャッシュ用のフォルダだと思いますが、
cacheのほうはよく分からないです。

参考ブログ

関連記事

人気ブログランキングへ

[PR]

トラックバック

http://yamablo.com/2009/05/23-172603.php/trackback

2 Responses to “Smartyの使用感?”

  1. yamablo --programing日記 Says:

    Smartyを使ったサイト制作

    現在、SmartyとmixiのOpenIDを利用したウェブサイトを制作中です。ということで、Smartyもそれなりに 使いこなしてきた(?)つもりなんで…

  2. 通りすがり Says:

    私も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.

    以上、参考になれば幸いです。

コメント


Get Adobe Flash playerPlugin by wpburn.com wordpress themes