{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>



Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号