Smarty 框架的模板繼承是通過使用布局(layout)和塊(block)的概念來實(shí)現(xiàn)的。這種方法可以讓你創(chuàng)建一個(gè)基本的骨架模板,其中包含所有頁(yè)面共享的元素,如頁(yè)眉、頁(yè)腳和其他公共部分。然后,你可以在子模板中覆蓋和插入內(nèi)容到這些塊中,從而實(shí)現(xiàn)樣式的靈活性和代碼的重用。
以下是使用 Smarty 模板繼承的基本步驟:
<!DOCTYPE html>
<html>
<head>
<title>{block name="title" /}</title>
</head>
<body>
<header>{block name="header" /}</header>
<main>{block name="content" /}</main>
<footer>{block name="footer" /}</footer>
</body>
</html>
在這個(gè)例子中,我們定義了四個(gè)塊:title、header、content 和 footer。
{extends file="layout.tpl"}
{block name="title"}Child Page Title{/block}
{block name="header"}
<p>This is the child page header.</p>
{/block}
{block name="content"}
<p>This is the child page content.</p>
{/block}
{block name="footer"}
<p>This is the child page footer.</p>
{/block}
在這個(gè)例子中,我們使用 {extends}
標(biāo)簽來指定要繼承的布局文件,并使用 {block}
標(biāo)簽來覆蓋和插入內(nèi)容到布局文件中的塊。
assign
函數(shù)來設(shè)置要傳遞給模板的數(shù)據(jù),并使用 display
函數(shù)來顯示模板。例如:<?php
require_once 'Smarty.class.php';
$smarty = new Smarty();
$smarty->assign('title', 'Child Page');
$smarty->display('child.tpl');
?>
這將使用 child.tpl 模板,并傳遞一個(gè)名為 “title” 的變量。然后,child.tpl 將使用布局文件,并替換其中的塊。
通過這種方式,你可以創(chuàng)建一個(gè)可重用的布局模板,并在多個(gè)子模板中輕松維護(hù)和擴(kuò)展。