insert

Имя аттрибута Тип Обязателен По умолчанию Описание
name строка (string) Да n/a Имя функции вставки (insert_name)
assign строка (string) Нет n/a Имя переменной, которой будет присвоен вывод
script строка (string) Нет n/a Bмя php файла, который будет подключен перед вызовом функции вставки
[var ...] [var type] Нет n/a Переменные, передаваемые в функцию вставки

Тэг insert очень похож на тэг include, кроме случая, когда кэширование включено. Insert тэг не кешируется. Он будет выполнен каждый раз, при обращении к шаблону.

Допустим вы имеете шаблон с баннером вверху страницы. Баннер может содержать любую смесь HTML, исзображенй, flash и т.д., то есть нельзя использовать просто статическую ссылку, и мы не хотим, чтобы код баннера кэшировался с остальной страницей. Тогда используем тэг insert: шаблон знает значения #banner_location_id# и #site_id# (взяты из файла конфигурации) и должен вызвать функцию, чтобы получить код баннера.

Пример 7-10. функция insert

{* пример установки баннера *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}

В этом примере мы используем имя "getBanner" и передаем параметры #banner_location_id# и #site_id#. Smarty попробует вызывать функцию insert_getBanner() в вашей PHP программе, передав значения #banner_location_id# и #site_id# первым параметром в виде ассоциативного массива. Все имена функций вставки должны начинаться с "insert_" для предотвращения возможных конфликтов имен. Функция insert_getBanner() должна обработать переданные переменные и вернуть результат. Он будет отображен в шаблоне вместо тэга insert. В данном случае Smarty вызовет функцию insert_getBanner(array("lid" => "12345","sid" => "67890")); и выведет результат на месте тэга insert.

Если указан аттрибут "assign", то вывод функции вставки будет присвоен указанной переменной вместо отображения. ЗАМЕЧАНИЕ: присвоение вывода тэга insert переменной шаблона не очень полезно, когда кеширование включено.

Если указан аттрибут "script", то указанный php файл будет подключен (только однажды) перед вызовом функции вставки. Это удобно, когда функция может не сущетсвовать, и должен быть подключен php файл, чтобы определить функцию. Путь к файлу должен быть либо абслотныю, либо относительным относительно $trusted_dir. Когда security активирована, то php файл должен быть в папке $trusted_dir.

Обьект Smarty передается в функцию как второй параметр. Так вы можете использовать и модифицировать информацию из объекта Smarty в функциях вставки.

Техническое Замечание: Некоторые части шаблона можно не кэшировать. Если активировано кэширование, то тэг insert все равно не будет кэширован. Он будет вызван каждый раз при генерации страницы, даже из кешированных страниц. Это полезно для таких вещей, как баннеры, опросы, прогнозы погоды, результаты поиска, области обратной связи и т.д.