{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} 缓存 |
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>
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>
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>
参见 模板继承, $smarty.block.parent
, $smarty.block.child
, 和 {extends}
原文: https://www.smarty.net/docs/zh_CN/language.function.block.tpl