# {block} `{block}` is used to define a named area of template source for template inheritance. For details see section of [Template Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md). The `{block}` template source area of a child template will replace the corresponding areas in the parent template(s). Optionally `{block}` areas of child and parent templates can be merged into each other. You can append or prepend the parent `{block}` content by using the `append` or `prepend` option flag with the child's `{block}` definition. With `{$smarty.block.parent}` the `{block}` content of the parent template can be inserted at any location of the child `{block}` content. `{$smarty.block.child}` inserts the `{block}` content of the child template at any location of the parent `{block}`. `{blocks}'s` can be nested. ## Attributes | Attribute Name | Required | Description | |----------------|----------|----------------------------------------------------------------------------------------------------------------------| | name | yes | The name of the template source block | | assign | no | The name of variable to assign the output of the block to. | > **Note** > > The assign attribute only works on the block that actually gets executed, so you may need > to add it to each child block as well. ## Option Flags (in child templates only): | Name | Description | |---------|-----------------------------------------------------------------------------------------| | append | The `{block}` content will be appended to the content of the parent template `{block}` | | prepend | The `{block}` content will be prepended to the content of the parent template `{block}` | | hide | Ignore the block content if no child block of same name is existing. | | nocache | Disables caching of the `{block}` content | ## Examples parent.tpl ```smarty {block name="title"}Default Title{/block} {block "title"}Default Title{/block} {* short-hand *} ``` child.tpl ```smarty {extends file="parent.tpl"} {block name="title"} Page Title {/block} ``` The result would look like ```html Page Title ``` parent.tpl ```smarty {block name="title"}Title - {/block} ``` child.tpl ```smarty {extends file="parent.tpl"} {block name="title" append} Page Title {/block} ``` The result would look like ```html Title - Page Title ``` parent.tpl ```smarty {block name="title"} is my title{/block} ``` child.tpl ```smarty {extends file="parent.tpl"} {block name="title" prepend} Page Title {/block} ``` The result would look like ```html Page title is my titel ``` parent.tpl ```smarty {block name="title"}The {$smarty.block.child} was inserted here{/block} ``` child.tpl ```smarty {extends file="parent.tpl"} {block name="title"} Child Title {/block} ``` The result would look like ```html The Child Title was inserted here ``` parent.tpl ```smarty {block name="title"}Parent Title{/block} ``` child.tpl ```smarty {extends file="parent.tpl"} {block name="title"} You will see now - {$smarty.block.parent} - here {/block} ``` The result would look like ```html You will see now - Parent Title - here ``` See also [Template Inheritance](../../programmers/advanced-features/advanced-features-template-inheritance.md), [`$smarty.block.parent`](../language-variables/language-variables-smarty.md#smartyblockparent-languagevariablessmartyblockparent), [`$smarty.block.child`](../language-variables/language-variables-smarty.md#smartyblockchild-languagevariablessmartyblockchild), and [`{extends}`](./language-function-extends.md)