模板继承比使用include方式有一个明显的方便,就是在方便每个页面引入不同的css js文件;
layout.tpl (父模板)
<html>
<head>
<title>{block name=title}默认页面标题{/block}</title>
{block name=head}{/block}
</head>
<body>
{block name=body}{/block}
</body>
</html>
myproject.tpl (子模板)
{extends file=‘layout.tpl‘}
{block name=head}
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
{/block}
mypage.tpl (孙子模板)
{extends file=‘myproject.tpl‘}
{block name=title}我的页面标题{/block}
{block name=head}
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
{/block}
{block name=body}我的HTML页面内容在这里{/block}
显示上面的模板:
$smarty->display(‘mypage.tpl‘);
另外,代替模板内使用{extends}的继承方式, 你可以通过在PHP内定义继承树来进行继承,使用extends:的资源类型。
下面的代码将返回和上面例子一样的结果:
<?php $smarty->display(‘extends:layout.tpl|myproject.tpl|mypage.tpl‘); ?>
原文:http://my.oschina.net/acitiviti/blog/363416