继承是从面向对象编程而来的概念,模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展。 扩展继承意味着子模板可以覆盖部分或全部父模板的块区域。
继承结构可以是多层次的,所以你可以继承于一个文件,而这个文件又是继承于其他文件,等等。
	在子模板和父模板中的{block}内容,可以通过
	append 和 prepend来进行合并。
	{block}的选项,和
	{$smarty.block.parent} 或 {$smarty.block.child}会持有这些内容。
    
	模板继承在编译时将编译成单独的一个编译文件。对比效果相似的{include}包含模板功能,模板继承的性能更高。
    
	子模板继承使用{extends}标签,
	该标签一定放要在子模板的第一行。
	另一种做法是将整个模板继承树,在PHP程序调用fetch()
      或 display()的时候,
	  用extends:的模板资源类型,该做法有更大的灵活性。
    
  当开启了$compile_check,继承树里面的全部文件都会在每次调用的时候检查是否有修改。
  因此,在生产环境中你最好关闭$compile_check。
  
  如果你的子模板里面有用到{include}
  来包含模板,而被包含的模板里面存在供{include}模板
  调用的{block}区域,
  那么在最顶层的父模板里面,你需要放置一个空的
  {block} 来作为继承。
  
Example 17.6. 模板继承例子
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');
页面将输出:
<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>
  参见
  {block},
   {extends}
   和  extends: 资源