mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
83 lines
3.8 KiB
Markdown
83 lines
3.8 KiB
Markdown
Tag {extends} [RU]
|
||
==================
|
||
|
||
Тег `{extends}` реализует наследование шаблонов, иерархия, обратная {include}. То есть шаблон сам выбирает своего родителя.
|
||
|
||
### {extends}
|
||
|
||
Родительский шаблон можно задать единожды и до объявления какого-либо блока.
|
||
|
||
```smarty
|
||
{extends 'parent.tpl'}
|
||
```
|
||
|
||
Имя родительского шаблона может быть задан динамически, в этом случае производительность отрисовки может снизиться.
|
||
|
||
```smarty
|
||
{extends $parent_tpl}
|
||
```
|
||
|
||
### {block}
|
||
|
||
Блок указывает фрагмент шаблона, который будет передан родителю. Имя блока может быть задано как явно
|
||
|
||
```smarty
|
||
{block bk1}content 1{/block}
|
||
...
|
||
{block 'bk2'}content 2{/block}
|
||
```
|
||
|
||
так и не явно, но в данном случае пострадает производительность
|
||
|
||
```smarty
|
||
{block "bk{$number}"}content {$number}{/block}
|
||
...
|
||
{if $condition}
|
||
{block "bk-if"}content, then 'if' is true{/block}
|
||
{else}
|
||
{block "bk{$fail}"}content, then 'if' is false{/block}
|
||
{/if}
|
||
```
|
||
|
||
### {use}
|
||
|
||
Что бы импортировать блоки из другого шаблона используйте тег {use}:
|
||
|
||
```smarty
|
||
{use 'blocks.tpl'}
|
||
```
|
||
|
||
|
||
### {parent}
|
||
|
||
Planned. Not supported yet. Feature #5.
|
||
|
||
```smarty
|
||
{block 'block1'}
|
||
content ...
|
||
{parent}
|
||
content ...
|
||
{/block}
|
||
```
|
||
|
||
### Perfomance
|
||
|
||
Алгоритм реализации наследования шаблонов может работать в разных режимах, в зависимости от условий.
|
||
Каждый режим имеет свою производительность.
|
||
|
||
1. **Максимальная** производительность:
|
||
* Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
|
||
* Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
|
||
2. **Средняя** производительность:
|
||
* Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
|
||
* Имена блоков заданы **не** явно, с использованием переменныч, условий или могут быть вложенные в другие теги.
|
||
3. **Низкая** производительность:
|
||
* Имена шаблонов в теге {extends } заданы **не** явно, с использованием переменных и условий.
|
||
* Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
|
||
4. **Минимальная** производительность:
|
||
* Имена шаблонов в теге {extends } заданы **не** явно, с использованием переменных и условий.
|
||
* Имена блоков заданы **не** явно, с использованием переменных, условий или могут быть вложенные в другие теги.
|
||
|
||
Режим может идти только на понижение, при изменении условий во время прохождения по иерархии шаблонов.
|
||
При любом режиме работы не используется буферизация данных, то есть данные выводятся сразу.
|