在Smarty中扩展基本模板

Cam*_*ron 2 templates smarty

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

谢谢

Dan*_*ita 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>
Run Code Online (Sandbox Code Playgroud)

mypage.tpl

{extends file="layout.tpl"}
{block name=title}My Page Title{/block}
{block name=body}My HTML Page Body goes here{/block}
Run Code Online (Sandbox Code Playgroud)

mypage.tpl的输出

<html>
<head>
  <title>My Page Title</title>
</head>
<body>
My HTML Page Body goes here
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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


Iva*_*uev 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"}
Run Code Online (Sandbox Code Playgroud)

并且base.tpl可以如下所示:

<html>
   <title>{$title}</title>
   <body>
   {$context}
   </body>
</html>
Run Code Online (Sandbox Code Playgroud)