Справка

Оператор [use] - Использовать шаблон

Ссылка на оператор в списке

Аргументы:
- Тип (одно из предустановленных значений, обязательно к заполнению)
Возможные значения:
  - module : Часть текущего модуля;
  - up : Вышестоящая часть;
  - function : Функция;
  - show : Отображение;
  - component : Компонент;
  - form : Форма;
  - tpl : Свой шаблон;
- Источник (имя компонента/части или шаблон) (строка/число)
Если данная команда определена, то любое содержимое части будет проигнорировано, за исключением переопределяемых блоков.

Подробнее можно почитать здесь в разделе "Наследование шаблонов с помощью блоков".

Первый аргумент команды определяет тип источника родительского шаблона:
[module] - часть текущего модуля
[up] - вышестоящая часть (часть-родитель)
[function/show/component/form] - компонент
[tpl] - текстовый шаблон

Второй аргумент определяет сам источник родительского шаблона.
Для [module] и [function] это будет имя части. [up] не нуждается в таком определении, а в случае с [tpl] вторым аргументом будет строка, содержащая шаблон.


Простой пример

Создадим две части. Родитель и наследник.

Родитель / parent:
some text
[block name="content"]
   Контент родителя
[/block]

Наследник:
[use module 'parent']
[block name="content"]
   Контент наследника
[/block]

Результатом будет:
some text
Контент наследника



Для того, чтобы добавить что-то вне блоков родительского шаблона, можно завернуть [use] внутрь блока. Например вот так:

Наследник:
top text
[block name="data"]
  [use module 'parent']
  [block name="content"]
     Контент наследника
  [/block]
[/block]
bottom text

Результатом будет:
top text
some text
Контент наследника
bottom text



Сложный пример множественного наследования шаблонов

Для этого примера мы будем использовать три части.

1ая часть - Прородитель / proto
Шапка
[block name="content"]
   Контент страницы
[/block]
Разделитель
[block name="bottom"]
   Контент подвала
[/block]

2ая часть - Родитель / parent
[use module 'proto']
Переопределим подвал
[block name="bottom"]
   [parent_block_content]
   Добавленный контент к подвалу
   [block name="advert"]
      Рекламный блок
   [/block]
[/block]

3я часть - Текущая
[use module 'parent']
Переопределяем контент
[block name="content"]
  [parent_block_content]
  Дополненный контент
[/block]
Переопределяем рекламу
[block name="advert"]
  Новая реклама
[/block]

Результатом будет следующий текст:
Шапка
Контент страницы
Дополненный контент
Разделитель
Контент подвала
Добавленный контент к подвалу
Новая реклама


Обратите внимание на оператор [parent_block_content], переносящий содержимое текущего блока из шаблона-родителя в дочерний шаблон. Как видно из примера он позволяет переносить контент сквозь всю иерархию частей (в нашем случае из 1ой части в 3ю и из 2ой в 3ю).