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}