在 PHP Smarty 框架中,實現模板繼承可以讓你創建一個基本的骨架模板(通常稱為布局模板),其中包含所有頁面共享的元素,例如頁眉、頁腳和導航欄。然后,你可以通過擴展這個基本骨架模板來定義其他內容模板。當 Smarty 渲染頁面時,它會自動將內容模板插入到骨架模板的相應位置。
以下是在 PHP Smarty 框架中實現模板繼承的步驟:
<!DOCTYPE html>
<html>
<head>
<title>{title}</title>
</head>
<body>
<header>
{include file="header.tpl"}
</header>
<main>
{block name="content" /}
</main>
<footer>
{include file="footer.tpl"}
</footer>
</body>
</html>
在這個例子中,{title}
是一個占位符,它將在子模板中替換。{block name="content" /}
是一個塊,它表示子模板可以覆蓋或插入到這個位置。
{extends file="layout.tpl"}
{block name="content"}
<h1>Welcome to Page 1</h1>
<p>This is the content of page 1.</p>
{/block}
在這個例子中,{extends file="layout.tpl"}
指令告訴 Smarty 這個模板繼承自 layout.tpl
。{block name="content"}
和 {/block}
之間的內容是將被插入到布局模板的相應位置的。
{extends file="layout.tpl"}
{block name="content"}
<h1>Welcome to Page 2</h1>
<p>This is the content of page 2.</p>
{/block}
這個模板與 page1.tpl
類似,但它將在布局模板的相同位置顯示不同的內容。
display()
方法渲染模板:require_once 'Smarty.class.php';
$smarty = new Smarty();
// 設置模板目錄和其他配置選項
$smarty->setTemplateDir('templates/');
$smarty->setConfigDir('configs/');
$smarty->setCacheDir('cache/');
// 渲染 page1.tpl
$smarty->display('page1.tpl');
// 渲染 page2.tpl
$smarty->display('page2.tpl');
這將分別渲染 page1.tpl
和 page2.tpl
,并將它們的內容插入到 layout.tpl
的相應位置。這樣,你就可以輕松地為你的網站創建一個一致的布局,同時允許每個頁面顯示其獨特的內容。