一、簡介
PHP Smarty是一款開放源代碼的模板引擎,它採用了MVC的思想,將業務邏輯與表現邏輯進行分離,使得代碼更加清晰易懂、易維護、易擴展。
下面是一個示例的代碼:
//載入Smarty類庫
require('Smarty.class.php');
$smarty = new Smarty();
//設置Smarty相關的配置
$smarty->left_delimiter = '{';
$smarty->right_delimiter = '}';
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
//傳入變數
$smarty->assign('username', 'Tom');
//編譯並輸出模板
$smarty->display('index.tpl');
二、變數輸出
在Smarty模板中,我們可以使用{$variable}的方式來輸出變數內容。
比如:
//PHP文件中
$name = 'Lucy';
$smarty->assign('username', $name);
//模板中
歡迎你,{$username}!
三、循環和條件判斷
Smarty中循環和條件判斷的語法與PHP類似,可以使用foreach、if、else等關鍵字。
比如:
//PHP文件中
$users = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'Lucy', 'age' => 18),
array('name' => 'Jerry', 'age' => 22)
);
$smarty->assign('users', $users);
//模板中
-
{foreach $users as $user}
- {$user.name},{$user.age}歲 {/foreach}
四、模板繼承
模板繼承是Smarty的一個重要特性,它可以提高模板的復用性、可維護性和可擴展性。
比如:
//PHP文件中
$smarty->assign('title', '首頁');
//index.tpl模板中
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{$title}</title>
</head>
<body>
<div id="header">
{$header}
</div>
<div id="content">
{$content}
</div>
<div id="footer">
{$footer}
</div>
</body>
</html>
//child.tpl模板中
{extends file="index.tpl"}
{block name="header"}
<div class="logo"></div>
<div class="navigation">
<ul>
<li><a href="#">首頁</a></li>
<li><a href="#">產品</a></li>
<li><a href="#">關於我們</a></li>
</ul>
</div>
{/block}
{block name="content"}
<div class="slider"></div>
<p>歡迎來到我們的網站!</p>
{/block}
{block name="footer"}
<p>版權所有,翻版必究!</p>
{/block}
五、自定義函數和修飾器
如果Smarty提供的函數和修飾器不夠用,我們可以自定義函數和修飾器來擴展。
比如:
//定義函數
function myfunction($params, $smarty) {
return strtoupper($params['string']);
}
$smarty->registerPlugin('function', 'myfunction', 'myfunction');
//模板中
{$name|myfunction} //輸出變數$name的值並將其轉換為大寫
//定義修飾器
function mymodifier($string) {
return str_replace('hello', 'hi', $string);
}
$smarty->registerPlugin('modifier', 'mymodifier', 'mymodifier');
//模板中
{$message|mymodifier} //將變數$message中的"hello"替換為"hi"
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245025.html
微信掃一掃
支付寶掃一掃