首页 > 代码库 > smarty模板继承

smarty模板继承

模板继承比使用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="http://www.mamicode.com/css/mypage.css" rel="stylesheet" type="text/css"/>
  <script src="http://www.mamicode.com/js/mypage.js"></script>
{/block}

mypage.tpl (孙子模板)

{extends file=‘myproject.tpl‘}
{block name=title}我的页面标题{/block}
{block name=head}
  <link href="http://www.mamicode.com/css/mypage.css" rel="stylesheet" type="text/css"/>
  <script src="http://www.mamicode.com/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‘); 
?>


smarty模板继承