fenom/docs/tags/extends.md

83 lines
3.8 KiB
Markdown
Raw Normal View History

2013-03-15 00:57:28 +04:00
Tag {extends} [RU]
==================
2013-02-15 12:17:23 +04:00
2013-03-15 00:57:28 +04:00
Тег `{extends}` реализует наследование шаблонов, иерархия, обратная {include}. То есть шаблон сам выбирает своего родителя.
2013-02-15 12:17:23 +04:00
### {extends}
2013-03-15 00:57:28 +04:00
Родительский шаблон можно задать единожды и до объявления какого-либо блока.
2013-02-19 09:51:33 +04:00
```smarty
{extends 'parent.tpl'}
```
2013-03-15 00:57:28 +04:00
Имя родительского шаблона может быть задан динамически, в этом случае производительность отрисовки может снизиться.
2013-02-19 09:51:33 +04:00
```smarty
{extends $parent_tpl}
```
2013-02-15 12:17:23 +04:00
### {block}
2013-03-15 00:57:28 +04:00
Блок указывает фрагмент шаблона, который будет передан родителю. Имя блока может быть задано как явно
2013-02-19 09:51:33 +04:00
```smarty
{block bk1}content 1{/block}
2013-03-15 00:57:28 +04:00
...
2013-02-19 09:51:33 +04:00
{block 'bk2'}content 2{/block}
2013-03-15 00:57:28 +04:00
```
2013-02-19 09:51:33 +04:00
2013-03-15 00:57:28 +04:00
так и не явно, но в данном случае пострадает производительность
2013-02-19 09:51:33 +04:00
2013-03-15 00:57:28 +04:00
```smarty
{block "bk{$number}"}content {$number}{/block}
...
2013-02-19 09:51:33 +04:00
{if $condition}
{block "bk-if"}content, then 'if' is true{/block}
{else}
{block "bk{$fail}"}content, then 'if' is false{/block}
{/if}
```
2013-02-15 12:17:23 +04:00
### {use}
2013-03-15 00:57:28 +04:00
Что бы импортировать блоки из другого шаблона используйте тег {use}:
2013-02-15 12:17:23 +04:00
2013-02-19 09:51:33 +04:00
```smarty
{use 'blocks.tpl'}
```
2013-02-15 12:17:23 +04:00
### {parent}
2013-07-04 01:31:47 +04:00
Planned. Not supported yet. Feature #5.
2013-06-08 00:08:00 +04:00
2013-02-19 09:51:33 +04:00
```smarty
{block 'block1'}
content ...
{parent}
content ...
{/block}
```
2013-02-15 12:17:23 +04:00
2013-02-19 09:51:33 +04:00
### Perfomance
2013-02-15 12:17:23 +04:00
2013-03-15 00:57:28 +04:00
Алгоритм реализации наследования шаблонов может работать в разных режимах, в зависимости от условий.
Каждый режим имеет свою производительность.
1. **Максимальная** производительность:
* Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
* Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
2. **Средняя** производительность:
* Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
* Имена блоков заданы **не** явно, с использованием переменныч, условий или могут быть вложенные в другие теги.
3. **Низкая** производительность:
* Имена шаблонов в теге {extends } заданы **не** явно, с использованием переменных и условий.
* Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
4. **Минимальная** производительность:
* Имена шаблонов в теге {extends } заданы **не** явно, с использованием переменных и условий.
2013-05-30 20:00:52 +04:00
* Имена блоков заданы **не** явно, с использованием переменных, условий или могут быть вложенные в другие теги.
2013-03-15 00:57:28 +04:00
Режим может идти только на понижение, при изменении условий во время прохождения по иерархии шаблонов.
2013-07-04 01:31:47 +04:00
При любом режиме работы не используется буферизация данных, то есть данные выводятся сразу.