是否可以在Smarty中使用另一个模板扩展基本模板?
我知道这可以在Django中使用{%entend%}标记。 Smarty中是否存在等效(或解决方法)?
由于
答案 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>
答案 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>