3.8 KiB
Tag {extends} [RU]
Тег {extends}
реализует наследование шаблонов, иерархия, обратная {include}. То есть шаблон сам выбирает своего родителя.
{extends}
Родительский шаблон можно задать единожды и до объявления какого-либо блока.
{extends 'parent.tpl'}
Имя родительского шаблона может быть задан динамически, в этом случае производительность отрисовки может снизиться.
{extends $parent_tpl}
{block}
Блок указывает фрагмент шаблона, который будет передан родителю. Имя блока может быть задано как явно
{block bk1}content 1{/block}
...
{block 'bk2'}content 2{/block}
так и не явно, но в данном случае пострадает производительность
{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}:
{use 'blocks.tpl'}
{parent}
Planned. Not supported yet. Feature #5.
{block 'block1'}
content ...
{parent}
content ...
{/block}
Performance
Алгоритм реализации наследования шаблонов может работать в разных режимах, в зависимости от условий. Каждый режим имеет свою производительность.
- Максимальная производительность:
- Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
- Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
- Средняя производительность:
- Имена шаблонов в теге {extends } заданы явно, без использования переменных и условий.
- Имена блоков заданы не явно, с использованием переменныч, условий или могут быть вложенные в другие теги.
- Низкая производительность:
- Имена шаблонов в теге {extends } заданы не явно, с использованием переменных и условий.
- Имена блоков заданы явно, без использования переменных, условий и не вложены ни в какой другой тег.
- Минимальная производительность:
- Имена шаблонов в теге {extends } заданы не явно, с использованием переменных и условий.
- Имена блоков заданы не явно, с использованием переменных, условий или могут быть вложенные в другие теги.
Режим может идти только на понижение, при изменении условий во время прохождения по иерархии шаблонов. При любом режиме работы не используется буферизация данных, то есть данные выводятся сразу.