В smarty включены несколько встроенных функций. Эти встроенные функции
интегрированы в язык шаблонов. Нельзя создавать
пользовательские функции
с такими же названиями и вам не следует модифицировать встроенные функции.
capture
{capture} используется для того, чтобы собрать результат обработки
части шаблона между тэгами
в какую-то переменную, вместо того, чтобы вывести результат браузеру.
Любое содержимое между {capture name='foo'} и {/capture} сохраняется в
переменную, указанную в атрибуте name.
Захваченные данные могут в дальнейшем использоваться в
шаблоне при помощи специальной переменной $smarty.capture.foo,
где "foo" - значение, переданное атрибуту name. Если атрибут name не указан,
то используется "default".
Команда capture поддерживает вложенность.
| Предостережение |
Будте осторожны, сохраняя вывод команды {insert}.
Если вы используете кэширование
и в области кэширования встречаются команды
insert, то не сохраняйте данный вывод.
|
Пример 7-1. Сохранение вывода шаблона {* мы не хотим выводить слой div, если содержимое не отображается *}
{capture name=banner}
{include file='get_banner.tpl'}
{/capture}
{if $smarty.capture.banner ne ''}
<div id="banner">{$smarty.capture.banner}</div>
{/if} |
|
Пример 7-2. сохранение содержимого в переменную
Этот пример также демонстрирует функцию
{popup}
{capture name=some_content assign=popText}
The server is {$smarty.server.SERVER_NAME|upper} at {$smarty.server.SERVER_ADDR}<br />
Your ip is {$smarty.server.REMOTE_ADDR}.
{/capture}
<a href="#" {popup caption='Server Info' text=$popText}>help</a> |
|
См. также
$smarty.capture,
{eval},
{fetch},
fetch()
и {assign}.