{block}模板区块
{block}可在模板上定义一块区域,以进行模板继承。配合 {extends}模板继承使用,详细参见{extends}模板继承.
子模板中的{block}区域代码,将会替换父模板对应的区域代码。
另外,{block}可以设置成合并父子模板的相应区域。在子模板的{block}中定义 append 或 prepend,可以使子模板附加在父模板 {block}区域的后面或前面.
{block}可以嵌套使用。
参数名 | 类型 | 必需 | 说明 |
---|---|---|---|
name | string | Yes | 模板区块的名称 |
append | - | No | {block}区域代码将附加到父模板的{block}内容之后 |
prepend | - | No | {block}区域代码将附加到父模板的{block}内容之前 |
hide | - | No | 如果没有子模板的{block}块进行填充,则不显示内容 |
literal | - | No | {block}不解析区域代码并将附加到父模板的{block} |
使用例子:
parent.tpl
<html>
<head>
<title>{block name="title"}Default Title{/block}</title>
</head>
<body>
{block name="body"}Default Body{/block}
</body>
</html>
child.tpl
{extends file="parent.tpl"}
{block name="title"}页面标题{/block}
{block name="body"}这个是内容区域{/block}
php
$sdopx = new Sdopx();
$sdopx->setTemplateDir('./view');
$sdopx->setCompileDir('./runtime');
$sdopx->display('child.tpl');
输出:
<html>
<head>
<title>页面标题</title>
</head>
<body>
这个是内容区域
</body>
</html>
例子2 使用 append prepend
parent.tpl
<html>
<head>
<title><title>{block name="title"} is my title{/block}</title></title>
</head>
<body>
{block name="body"}<div>main Body</div>{/block}
</body>
</html>
child.tpl
{extends file="parent.tpl"}
{block name="title" prepend}页面标题{/block}
{block name="body" append}这个是内容区域{/block}
输出:
<html>
<head>
<title><title>页面标题 is my title</title></title>
</head>
<body>
<div>main Body</div>这个是内容区域
</body>
</html>
例子3:原样包含 literal :
parent.tpl
<html>
<head>
<title>{block name="title"} is my title{/block}</title>
{block name="css"}{/block}
</head>
</html>
child.tpl
{extends file="parent.tpl"}
{block name="css" literal}
<style>
html, body {
padding: 0px;
margin: 0px;
}
</style>
{/block}
{block name="title" append} Page Title{/block}
输出:
<html>
<head>
<title> is my title Page Title</title>
<style>
html, body {
padding: 0px;
margin: 0px;
}
</style>
</head>
</html>