Тэги {include} используются для включения других шаблонов в текущий. Любые переменные, доступные в текущем шаблоне, доступны и во включаемом. Тэг {include} должен иметь атрибут 'file', который указывает путь к ресурсу шаблона.
Опциональный атрибут assign указывает, что результат выполнения {include} будет присвоен переменной вместо отображения.
Все значения присвоенных переменных восстанавливаются после того, как подключаемый шаблон отработал. Это значит, что вы можете использовать все переменные из подключающего шаблона в подключаемом, но изменения переменных внутри подключаемого шаблона не будут видны внутри подключающего шаблона после команды {include}.
Имя атрибута | Тип | Обязателен | По умолчанию | Описание |
---|---|---|---|---|
file | string | Да | n/a | Имя файла шаблона для включения |
assign | string | Нет | n/a | Имя переменной, которой присвоится вывод шаблона |
[var ...] | [var type] | Нет | n/a | Переменные, переданные в локальную область включаемого шаблона |
Пример 7.17. Функция {include}
<html> <head> <title>{$title}</title> </head> <body> {include file='page_header.tpl'} {* тут идёт тело шаблона *} {include file="$tpl_name.tpl"} <-- заменит $tpl_name его значением {include file='page_footer.tpl'} </body> </html>
Вы также можете передать переменные в подключаемый шаблон в виде атрибутов. Любая переменная, переданная в подключаемый шаблон, доступны только в области видимости подключаемого файла. Переданные переменные имеют преимущество перед существующими переменными с аналогичными именами.
Пример 7.18. передача переменных в {include}
{include file='header.tpl' title='Main Menu' table_bgcolor='#c0c0c0'} {* тут идёт тело шаблона *} {include file='footer.tpl' logo='http://my.example.com/logo.gif'}
где header.tpl может быть
<table border='1' width='100%' bgcolor='{$table_bgcolor|default:"#0000FF"}'> <tr> <td> <h1>{$title}</h1> </td> </tr> </table>
Пример 7.19. {include} и присвоение переменной
Этот пример присвоит содержимое nav.tpl переменной $navbar, которая затем выводится сверху и снизу страницы.
<body> {include file='nav.tpl' assign=navbar} {include file='header.tpl' title='Main Menu' table_bgcolor='#effeef'} {$navbar} {* тут идёт тело шаблона *} {include file='footer.tpl' logo='http://my.example.com/logo.gif'} {$navbar} </body>
Для подключения файлов вне папки $template_dir можно указывать файл с помощью ресурсов.
Пример 7.20. Примеры ресурсов шаблонов в {include}
{* абсолютные пути *} {include file='/usr/local/include/templates/header.tpl'} {* абсолютные пути (то же самое) *} {include file='file:/usr/local/include/templates/header.tpl'} {* абсолютные пути в windows (ОБЯЗАТЕЛЬНО используйте префикс "file:") *} {include file='file:C:/www/pub/templates/header.tpl'} {* подключение шаблона из ресурса с именем "db" *} {include file='db:header.tpl'} {* подключение шаблона с переменным именем - например, $module = 'contacts' *} {include file="$module.tpl"} {* не будет работать, т.к. в одинарных кавычках не работает подстановка переменных *} {include file='$module.tpl'}
См. также {include_php}, {insert}, {php}, Ресурсы and Составные шаблоны.