Smarty:block函数
{block}
{block}
可在模板上定义一块区域,以进行模板继承。详细参见模板继承.
子模板中的{block}
区域代码,将会替换父模板对应的区域代码。
另外,{block}
可以设置成合并父子模板的相应区域。在子模板的{block}
中定义 append
或prepend
,可以使子模板附加在父模板 {block}
区域的后面或前面。 在{block}
内容中使用{$smarty.block.parent},可以让父模板的区域代码放到 子模板{block}
内的任何位置。
{blocks}
可以嵌套使用。
属性:
参数名称 | 类型 | 必选参数 | 默认值 | 说明 |
---|---|---|---|---|
name | string | Yes | n/a | 模板区域的名称 |
可选属性 (仅在子模板中使用):
名称 | 说明 |
---|---|
append | {block} 区域代码将附加到父模板的{block} 内容之后 |
prepend | {block} 区域代码将附加到父模板的{block} 内容之前 |
hide | 在没有该名称区域的时候,忽略区域内容。 |
nocache | 关闭{block} 缓存 |
Example 7.15. 简单的 {block}
例子
parent.tpl
<html> <head> <title>{block name="title"}Default Title{/block}</title> <title>{block "title"}Default Title{/block}</title> {* short-hand *} </head> </html>
child.tpl
{extends file="parent.tpl"} {block name="title"} Page Title {/block}
结果输出:
<html> <head> <title>Page Title</title> </head> </html>
Example 7.16. 前面附加 {block}
例子
parent.tpl
<html> <head> <title>{block name="title"}Title - {/block}</title> </head> </html>
child.tpl
{extends file="parent.tpl"} {block name="title" prepend} Page Title {/block}
结果输出
<html> <head> <title>Title - Page Title</title> </head> </html>
Example 7.17. 后面附加 {block}
例子
parent.tpl
<html> <head> <title>{block name="title"} is my title{/block}</title> </head> </html>
child.tpl
{extends file="parent.tpl"} {block name="title" append} Page Title {/block}
结果输出:
<html> <head> <title>Page title is my titel</title> </head> </html>
Example 7.18. {$smarty.block.child}
例子
parent.tpl
<html> <head> <title>{block name="title"}The {$smarty.block.child} was inserted here{/block}</title> </head> </html>
child.tpl
{extends file="parent.tpl"} {block name="title"} Child Title {/block}
结果输出:
<html> <head> <title>The Child Title was inserted here</title> </head> </html>
Example 7.19. {$smarty.block.parent}
例子
parent.tpl
<html> <head> <title>{block name="title"}Parent Title{/block}</title> </head> </html>
child.tpl
{extends file="parent.tpl"} {block name="title"} You will see now - {$smarty.block.parent} - here {/block}
结果输出:
<html> <head> <title>You will see now - Parent Title - here</title> </head> </html>