Vài ví dụ về Smarty

posted Jul 21, 2009, 1:20 AM by Tran Phuoc Tuan   [ updated Jul 21, 2009, 4:52 AM ]

( Thegioiwebsite.net ) - Thông thường khi lập trình PHP bạn hay viết lẫn cả phần HTML với mã lệnh PHP trên một trang.Điều này sẽ dẫn đến rất rối nhất là khi bảo trì.Bạn là người viết ra và cũng là người bảo trì thì không sao nhưng nếu bạn viết ra sau đó người khác bảo trì.Chắc họ nhìn vào code của bạn họ sẽ ngất mất vì quá rối.Mặt khác khi làm nhiều trang web có chức năng như nhau.Chỉ khác giao diện nên nếu lập trình theo kiểu như vậy bạn phải viết lại hoàn toàn.Ngoài ra muốn code được bạn phải chờ người thiết kế giao diện cho bạn sau đó cắt ra file HTML… rồi mới code…Tất cả những điều này sẽ làm giảm năng xuất công việc của bạn đi rất nhiều. Smarty ra đời đã giải quyết được các vấn đề nêu trên.Dưới đây là một số ưu điểm của Smarty:

1.Tốc độ load trang rất nhanh ( do tạo được cache)

2.Code ứng dụng của bạn trở lên trong sáng,mạch lạc và dễ bảo trì hơn rất nhiều (do tách biệt phần code và templates)

3.Hiệu quả công việc đạt tối đa ( Người thiết kế và người lập trình làm việc hoàn toàn độc lập.Thay đổi giao diện website nhanh chóng… )

4.Được sử dụng phổ biến ( bên Nhật rất ưa chuộng Smarty )

(Thống kê về việc nên dùng templates engine nào)

Nói chung nếu bạn làm về PHP thì Smarty hoặc Xtemplates(  Cái này mình sẽ nói sau ) thì bạn không thể không học.Dưới đây là tài liệu về Smarty bạn download về đọc sẽ hiểu ngay cách làm ( thường chỉ mất 1 tuần đọc là bạn có thể làm tốt Smarty.). Bấm vào đây để download file PDF Download file Zip

Còn đây là toàn bộ Core của Smarty


Giả sử cấu trúc của trang như sau :

Thư mục:

Smarty

templates

  • index.tpl

templates_c

index.php

Nội dung file index.php như sau

<?php

include(’smarty/libs/Smarty.class.php’);
include(’smarty/libs/Config_File.class.php’);
include(’smarty/libs/Smarty_Compiler.class.php’);
$smarty->template_dir =’templates/’;
$smarty->compile_dir=’templates_c/’;
$smarty->cache_dir    =’smarty/cache/’;
$smarty->config_dir    =’smarty/configs/’;
global $smarty;
$smarty = new Smarty();

$smarty->assign(”title”,”Tieu de trang web”);

$smarty->assign(”varNoidung”,”Chao mung ban den voi smarty templates engine”);

$smarty->display(”index.tpl”);

?>

File index.tpl có nọi dung như sau

<html>

<head>

<title>{$title}</title>

</head>

<body>

{$varNoidung}

</body>

</html>

Ok, khi chạy trang index.php thì trang web sẽ có tiêu đề :Tieu de trang web và nội dung là : Chao mung ban den voi smarty templates engine.

Đây chỉ là 1 ví dụ đơn giản giúp bạn hình dung ra cách kết hợp giữa file php và html. Smarty sẽ kết hợp giữa file phpHTML và biên dịch thành 1 file có mã trộn trong thư mục templates_c.

Download Smarty hello world


Cấu trúc thư mục như sau:

Thư mục:

Smarty

templates

  • index.tpl
  • header.tpl
  • footer.tpl
  • left_sidebar.tpl
  • right_sidebar.tpl
  • layout.tpl

templates_c

style.css

index.php

Nội dung file index.php

<?php

include(’smarty/libs/Smarty.class.php’);
include(’smarty/libs/Config_File.class.php’);
include(’smarty/libs/Smarty_Compiler.class.php’);
$smarty->template_dir =’templates/’;
$smarty->compile_dir=’templates_c/’;
$smarty->cache_dir    =’smarty/cache/’;
$smarty->config_dir    =’smarty/configs/’;
global $smarty;
$smarty = new Smarty();

$smarty->assign(”title”,”Tiêu đề trang web”);

$smarty->assign(”hello”,”Hello Thegioiwebsite.net, Nội dung này được gán vào biến hello“); //assign(”biến”,”giá trị”)

$smarty->assign(”content”,”index.tpl”); // cho nội dung trang index.tpl vào phần content trong layout

$smarty->display(”layout.tpl”);

?>

Trang layout.tpl:

<html>

<head>

<title>{$title}</title>
<link rel=”stylesheed” href=”style.css”  />
</head>

<body>
<div id=”wraper”>

<div id=”header”>{include file=”header.tpl”}</div>

<table width=”100%”>

<tr>

<td>{include file=”left_sidebar.tpl”}</td>

<td id=”content”>{include file=”$content”}</td>

<td>{include file=”right_sidebar.tpl”}</td>

</tr>

</table>

<div id=”footer”>{include file=”footer.tpl”}</div>

</div>
{$hello}

</body>

</html>

Như vậy khi vào trang index thì $content đã được gán nội dung là nội dung của file index.tpl bởi câu lệnh : $smarty->assign(”content”,”index.tpl”);

Nội dung file index.tpl sẽ trình bày các thông tin mà bạn muốn. Ví dụ trang index.tpl sẽ hiển thị nội dung biến hello chẳng hạn thì nội dung trang index.tpl sẽ là:

<div>{$hello}</div>

Các templates : header, footer, left_sidebar, right_sidebar… có thể để tĩnh hoặc động tương tự như file index.tpl


Comments