include_php

Имя аттрибутаТипОбязателенПо умолчаниюОписание
fileстрока (string)Даn/aИмя подключаемого php файла
onceлогический (boolean)НетtrueУкзаывает подключать файл или нет, если он уже был однажды подключен
assignстрока (string)Нетn/aНазвание переменной, которой будет присвоен вывод include_php

Тэг include_php используется для подключения php скрипта в шаблон. Если security включен, то php скрипт должен быть расположен в папке $trusted_dir. Тэг include_php должен иметь атрибут "file", который указывает путь подключаемого php файла (относительный к $trusted_dir или абсолютный путь).

include_php это хороший путь для управления компонентными шаблонами, держать PHP код вне файлов шаблонов. Допустим у вас есть шаблон, который выводит навигацию сайта, информация о которой динамически загружается из базы данных. Вы можете хранить php файл, который получает данные из базы данных, в отдельной папке, и подключать его в начале шаблона. Теперь можно подключать этот файл шаблона в любом месте, не волнуясь о происхождении информации (база данных или нет).

По умолчанию, php файлы подключаются только один раз, даже если вызываются несколько раз в шаблоне. Можно указать, что файл должен быть подключен каждый раз, указав атрибут once. Установив once в ложь (false) указывает, что файл должен быть подключен вне зависимости от того, был ли он подключен раньше.

Можно указать опциональный атрибут assign, который указывает имя переменной, которой будет присвоен вывод include_php вместо отображения.

Объект smarty доступен в подключаемом php файле как $this.

Пример 7-9. функция include_php

load_nav.php
-------------

<?php

	// Загрузка переменных из базы данных mysql и передача их в шаблон
	require_once("MySQL.class.php");
	$sql = new MySQL;
	$sql->query("select * from site_nav_sections order by name",SQL_ALL);
	$this->assign('sections',$sql->record);

?>


index.tpl
---------

{* абсолютный путь или относительный относительно $trusted_dir *}
{include_php file="/path/to/load_nav.php"}

{foreach item="curr_section" from=$sections}
	<a href="{$curr_section.url}">{$curr_section.name}</a><br>
{/foreach}