Глава 7. Встроенные функции

Содержание
capture
config_load
foreach,foreachelse
include
include_php
insert
if,elseif,else
ldelim,rdelim
literal
php
section,sectionelse
strip

В smarty включены несколько встроенных функций. Встроенные функции интегрированы в язык шаблонов. Нельзя создавать пользовательские функции с такими же названиями или как-либо модифицировать встроенные функции..

capture

capture используется для того, чтобы присвоить вывод шаблона какой-либо переменной вместо его вывода на экран. Любое содержание между {capture name="foo"} и {/capture} сохраняется в переменную, указанную в атрибуте name. Затем его можно использовать в шаблоне с помощью специальной переменной $smarty.capture.foo, где foo - значение, переданное атрибуту name. Если аттрибут name не указан, то используется default. Каждая комманда {capture} должна иметь пару {/capture}. capture поддерживает вложение.

Техническое замечание: Smarty 1.4.0 - 1.4.4 помещало захваченный вывод в переменную $return. С версии 1.4.5 поведение было изменено на использование атрибута name, так что обновите ваши шаблоны соответственно.

Предостережение

Будте осторожны, сохраняя вывод комманды insert. Если вы используете кэширование и встречаются команды insert в области кэiированния, то не сохраняйте данный вывод.

Пример 7-1. Сохранение вывода шаблона

{* we don't want to print a table row unless content is displayed *}
{capture name=banner}
{include file="get_banner.tpl"}
{/capture}
{if $smarty.capture.banner ne ""}
	<tr>
		<td>
			{$smarty.capture.banner}
		</td>
	</tr>
 {/if}