Trong bài viết này minh giới thiệu về cách dùng file .tpl. Đối với những ứng dụng viết cho nhiều người sử dụng ( cụ thể là những web cần chỉnh sửa giao diện nhiều: forum phpbb). Với cách viết thông thường, mỗi lần thay đổi giao diện bạn sẽ fải edit tòan bộ code, như vậy xác suất dẫn đến lỗi code rất cao chưa kể đến người edit giao diện cần fải có hiểu biết về php mới sữa được. Nên đối với những ứng dụng này bạn nên viết theo kiểu template.
Template là những file tạo giao diện cho website và thường độc lập vơi code. định dạng file thường dùng trong template là .tpl ( kô bắt buộc, bạn có thể chọn đuôi khác miễn sao bạn thấy dễ dàng sử dụng là được). Khi đó cứ mỗi lần bạn thay đổi giao dịên chỉ cần edit lại các file .tpl là xong và vì nó ko chứa các mã PHP nên bạn kô cần fải là người rành về php mới edit được như vậy ứng dụgn của bạn sẽ được phổ biến rộng hơn.
Để dễ hiểu tôi sẽ tạo một ví dụ sử dụgn template đơn giản để dễ hiểu:
ví dụ:
Bạn có một trang web in các ngày hiện hành:
file calender.php có nội dung như sau:
$ngay = $_GET['date'];
print "Hôm nay là ngày:".$ngay;?>
Khi gọi calender.php?date=04-09-2006 thì kết quả sẽ là :
Hôm nay ngày: 04-09-2006
Đây là cách viết thông thường, giả sử bây giờ bạn muôn thêm câu "Welcome to phpbasic.com" fía dười dòng "Hôm nay ngày 04-09-2006"
Bạn sẽ edit lại file calender.php như sau:
// kết nối csdl: $ngay = $_GET['date'];
print "Hôm nay là ngày:".$ngay;
print "Welcome to phpbasic.com";?>hoặc là
// kết nối csdl$ngay = $_GET['date'];
print "Hôm nay là ngày:".$ngay;?>Welcome to phpbasic.com
Ở đây chỉ có một dòng code nên bạn dễ dàng edit , bạn thữ nghĩ nếu nó là một ứng dụng thì bạn sẽ tìm chỗ để thêm câu đó vào cũng là một vấn đề chưa kể xác suất gây ra lỗi rất cao và càng khó khăn hơn cho những ngừơi kô rành về php.
Để giải quyết bạn viết theo kiểu template như sau:
tạo 2 file riêng rẽ, một file code .php và một file giao diện .tpl
tạo file giao dien template.tpl như sau:
Hôm nay là ngày: $ngay
Welcome to phpbasic.com
file code calender.php có nội dung như sau:
$ngay = $_GET['date'];
$file = file_get_contents("template.tpl"); //đọc nội dung file .tpl
print str_replace('$ngay',$date,$file);
// tìm và thay thế chữ $ngay trong file .tpl bằng biến $ngay trong file calender.php?>
Kết quả của file calender.php này khi view trên trình duyệt cũng giống như là dùng kiểu bình thường , nhưng bây giờ bạn muốn edit lại giao diện bạn chỉ cần sữa lại file .tpl và chỉ cần giữ lại chữ $ngay là được, như vậy một người kô biết về code cũng có thể edit được nội giao diện của ứng dụng.
Đây là ví dụ đơn giản, hi vọng giúp bạn hiểu fần nào về .tpl
-------------------------------------------------------------------------
Tài liệu FULL sử dụng Smarty (Enlish):
http://www.smarty.net/manual/en/
Tui cũng đang xài Smarty... Mấy hàm tui thường dùng trong file php là assign (để gán dữ liệu) và display (để hiển thị file template), VD:
Trong file index.php:
// Đặt mã gọi class của smarty ở đây
$mess = "Hello";
$template->assign('mess',$mess);
$template->display('index.tpl');
Trong file index.tpl:
{$mess}
Như vậy khi gọi 1 file index.php trên trình duyệt bạn sẽ thấy chữ "Hello".
Còn nếu dữ liệu của bạn thuộc dạng mảng (array) thì cũng làm tương tự:
// File index.php
$mess = array("Hello! ","Welcome ","To ","My Site");
$template->assign('mess',$mess);
$template->display('index.tpl');
{$mess[0]}{$mess[1]}{$mess[2]}{$mess[3]}
Như vậy khi gọi file index.php bạn sẽ thấy dòng "Hello! Welcome to my site".
Nếu dữ liệu của bạn là vòng lặp, chẳng hạn như fetch nhiều dữ liệu từ database ra thì sử dụng {section}. Cái này tui ko rành lắm, xem tài liệu của smarty sẽ biết chi tiết hơn.