2009-11-03 106 views
2

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

谢谢

回答

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> 
+0

谢谢,这正是我正在寻找 – Cameron 2009-11-03 20:50:00

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

+1真棒,感谢您添加此答案! (我不再使用Smarty,但正如你所说,这对其他人来说是一个很好的参考) – Cameron 2011-08-19 18:16:29