2009-11-03 105 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