在 PHP Smarty 框架中,实现模板继承可以让你创建一个基本的骨架模板(通常称为布局模板),其中包含所有页面共享的元素,例如页眉、页脚和导航栏。然后,你可以通过扩展这个基本骨架模板来定义其他内容模板。当 Smarty 渲染页面时,它会自动将内容模板插入到骨架模板的相应位置。
以下是在 PHP Smarty 框架中实现模板继承的步骤:
创建基本骨架模板(layout.tpl):<!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 的相应位置。这样,你就可以轻松地为你的网站创建一个一致的布局,同时允许每个页面显示其独特的内容。