在Smarty中扩展基本模板

时间:2009-11-03 18:57:45

标签: templates smarty

是否可以在Smarty中使用另一个模板扩展基本模板?
我知道这可以在Django中使用{%entend%}标记。 Smarty中是否存在等效(或解决方法)?

由于

2 个答案:

答案 0 :(得分:10)

虽然这个问题有点陈旧,但我认为可能有人在2011年8月寻找这些信息,这将有助于知道现在可以用Smarty 3完成。

继承示例

<强> layout.tpl

<html>
<head>
  <title>{block name=title}Default Page Title{/block}</title>
</head>
<body>
{block name=body}{/block}
</body>
</html>

<强> mypage.tpl

{extends file="layout.tpl"}
{block name=title}My Page Title{/block}
{block name=body}My HTML Page Body goes here{/block}

输出mypage.tpl

<html>
<head>
  <title>My Page Title</title>
</head>
<body>
My HTML Page Body goes here
</body>
</html>

逐字逐句:http://www.smarty.net/inheritance

答案 1 :(得分:5)

Smarty中没有内置模板继承。但您可以使用{include}{capture}执行类似操作。

您的网页模板可能如下所示:

{capture assign="context"}
   <h2>Here is my page</h2>
   {... some other smarty suff here ...}
{/capture}

{assign var="title" value="Just simple title text here"}

{include file="base.tpl"}

base.tpl可能如下所示:

<html>
   <title>{$title}</title>
   <body>
   {$context}
   </body>
</html>