Smarty 模板继承
在覆盖父模板的{block}块以外的地方, 子模板不能定义任何内容。任何在{block}以外的 内容都会被自动忽略。
在子模板和父模板中的{block}内容,可以通过 append 和 prepend来进行合并。 {block}的选项,和 {$smarty.block.parent} 或 {$smarty.block.child}会持有这些内容。
布局继承使用特点
1.布局页面可以有许多{block},子级页面也可以有许多block,他们通过name属性进行关联
2子级页面除了{extend} 和{block}其它内容不给显示,
3布局页面的{block}可以有默认内容,子级页面不实现就直接显示,实现覆盖
4布局的{block}可以彼此嵌套,子级实现可以有针对性实现
5{$smarty.block.child}布局可以调用子级内容
{$smarty.block.child}子级页面可以调用父级页面内容
父模板
<html>
<head>
<title>{block name=title}默认页面标题{/block}</title>
{block name=head}{/block}
</head>
<body>
{block name=body}{/block}
</body>
</html>
子模板
{extends file='layout.tpl'}
{block name=head}
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
{/block}
孙模板
{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');
页面将输出
<html> <head>
<title>我的页面标题</title>
<link href="/css/mypage.css" rel="stylesheet" type="text/css"/>
<script src="/js/mypage.js"></script>
</head>
<body>
我的HTML页面内容在这里
</body>
</html>