子模板中的{block}
区域代码,将会替换父模板对应的区域代码。
另外,{block}
可以设置成合并父子模板的相应区域。在子模板的{block}
中定义 append
或 prepend
,可以使子模板附加在父模板 {block}
区域的后面或前面。 在内容中使用{$smarty.block.parent},可以让父模板的区域代码放到 子模板{block}
内的任何位置。
{blocks}
可以嵌套使用。
属性:
可选属性 (仅在子模板中使用):
名称 | 说明 |
---|---|
append | {block} 区域代码将附加到父模板的{block} 内容之后 |
prepend | {block} 区域代码将附加到父模板的{block} 内容之前 |
hide | 在没有该名称区域的时候,忽略区域内容。 |
nocache | 关闭 缓存 |
Example 7.15. 简单的 {block}
例子
parent.tpl
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}
结果输出
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>
parent.tpl
- <html>
- <head>
- <title>{block name="title"}The {$smarty.block.child} was inserted here{/block}</title>
- </head>
- </html>
child.tpl
结果输出:
- <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>
参见 , $smarty.block.parent
, , 和 {extends}