Chapter 7. Встроенные функции

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

Некоторые эти функции имеют атрибут assign, который помещает результати их выполнения в переменную шаблона, вместо вывода в браузер, практически как функция {assign}.

{capture}

{capture} используется для того, чтобы собрать результат обработки части шаблона между тэгами в какую-то переменную, вместо того, чтобы отобразить результат. Любое содержимое между {capture name='foo'} и {/capture} сохраняется в переменную, указанную в атрибуте name.

Захваченные данные могут в дальнейшем использоваться в шаблоне при помощи специальной переменной $smarty.capture.foo, где foo - значение, переданное атрибуту name. Если атрибут name не указан, то используется default, т.е. $smarty.capture.default.

Функция {capture} поддерживает вложенность.

Имя атрибута Тип Обязателен По умолчанию Описание
name string Нет default Имя блока для сохранения
assign string Нет n/a Имя переменной для сохранения результатов

Внимание

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

Example 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}

   


Example 7.2. Сохранение содержимого в переменную

Этот пример также демонстрирует функцию {popup}


{capture name=some_content assign=popText}
Имя сервера: {$smarty.server.SERVER_NAME|upper}<br />
Адрес сервера: {$smarty.server.SERVER_ADDR}<br />
Ваш IP: {$smarty.server.REMOTE_ADDR}.
{/capture}

<a href="#" {popup caption='Информация о Сервере' text=$popText}>help</a>

   


См. также $smarty.capture, {eval}, {fetch}, fetch() и {assign}.