{block} は、テンプレートの継承用に、
テンプレートソースのある範囲に名前を定義します。詳細は
テンプレートの継承
の節を参照ください。
{block} で囲んだ子テンプレートの範囲は、
親テンプレートの対応する部分を置き換えます。
オプションで、子テンプレートと親テンプレートの {block}
範囲をマージすることもできます。親の {block}
のコンテンツを子の {block} の前あるいは後に加えるには、
子の {block} を定義する際にオプションのフラグ
append あるいは prepend を指定します。
{$smarty.block.parent} を使うと、親テンプレートの {block}
の中身を子テンプレートの {block} 内の好きな場所に挿入することができます。
また {$smarty.block.child} は、子テンプレートの {block}
の中身を親テンプレートの {block} 内の好きな場所に挿入することができます。
{blocks} はネストすることができます。
属性
| 属性名 | 型 | 必須 | デフォルト | 概要 |
|---|---|---|---|---|
| name | string | Yes | n/a | テンプレートソースブロックの名前 |
オプションのフラグ (子テンプレートのみ)
| 名前 | 概要 |
|---|---|
| append |
{block} のコンテンツを親テンプレートの {block} に追記する |
| prepend |
{block} のコンテンツを親テンプレートの {block} の前に置く |
| 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> {* 短縮形 *}
</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 titel{/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" append}
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" append}
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}
も参照ください。
