Bài 03: Một số cú pháp cơ bản trong Smarty

Smarty Engine 05/02/2017 02:57 3036
Trong bài viết này mình sẻ mở rộng hơn một số cú pháp về cách khai báo biến trong template smarty. Hay làm thể nào để thiết lập được cache trong smarty.

Smarty hỗ trợ một vài cú pháp lập trình nâng cao , bao gồm :

  • Biến, hằng
  • If, elseif, else
  • Điều khiển luồng dữ liệu, foreach.
  • Hàm do người dùng địnhn nghĩa .
  • ...

1. Một số cú pháp cơ bản trong Smarty.

Nội dungSmarty
Mở và đóng thẻ {}
Ghi chú {* ghi chú một hoặc nhiều dòng*}
Khai báo biến

{assgin var = ten_bien value = giá trị}

Hiển thị biến {$ten_bien}

Hiển thị biến 

$_GET,

$_POST,

$_COOKIE, 

$_SESSION

{$smarty.get.page}

{$smarty.post.page}

{$smarty.cookies.username}

{$smarty.session.id}

Hiển thị giá trị một phần của mảng {$ten_mang[vi_tri]}
Duyệt mảng dùng vòng lặp foreach

{foeach ($ten_mang as $ten_phan_tu}

...

{/endforeach}

if

{if isset($foo) }

...

{/if}

Smarty cho phép bạn viết code PHP trong template với cặp thẻ {php}{/php}

Ví dụ:

{php}
     $name = "Nguyễn Văn A";
     echo $name;
{/php}

Để viết một khối mã Javascript(trừ việc khai báo biến) và CSS trong template bạn phải dùng cặp thẻ {literal} {/literal}.

Ví dụ:

{literal}
// Javascript
<script type="text/javascript">
    alert("Xin chào các bạn");
</script>
 
// CSS
<style type="text/css">
    a{ color:#C00000};
    b{ color:#C00000};
</style>
{/literal}

2. Caching - bộ nhờ đệm

  • Bộ nhớ đệm được sử dụng để tăng tốc độ gọi display() hoặc fetch() bằng cách lưu output vào file.
  • Nếu có một phiên bản được cache thì nó sẽ hiển thị thay vì regenerating.
  • Caching có thể tăng tốc độ trang lên rất nhiều, đặc biệt ddooid với template có thời gian tính toán dài
  • Lưu ý: template nào đang được cached và caching trong bao lâu.
  • Vị dụ ta hiển thị home page mà không thay đổi nội dung thường xuyên thị ta có thể cache trong 1, 2 giờ hoặc lâu hơn. Nếu là trang tin tức thay đổi nội dung thường xuyên thì không nên dùng cache

2.1 Thiết lập cache

  • Bằng cách đặt caching caching = 1 hoặc bằng 2
  • Khi caching = 1
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 1;
$smarty->display('index.tpl');
  • Khi caching = 2
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching = 2;
// thiết lập cache chi trang index là 5 phút.
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');

3.Kế thừa template

Ta có trang home.tbl

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>{block name=title }Home Page{/block}</title>
</head>
<body>

</body>
</html>

page.tpl kế thừa home.tpl ta có block giống như một biến giữa block giá trị mặc định. Hàm kế thừa ta có thể thay đổi nội dung.

{extends file=''Home.tpl"}
{block name=title }My Page{/block}

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.