Справка
Оператор [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ю).
Подробнее можно почитать здесь в разделе "Наследование шаблонов с помощью блоков".
Первый аргумент команды определяет тип источника родительского шаблона:
[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ю).