What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Table of Contents
В smarty включены несколько встроенных функций. Эти встроенные функции интегрированы в язык шаблонов. Нельзя создавать пользовательские функции с такими же названиями и вам не следует модифицировать встроенные функции.
Некоторые эти функции имеют атрибут assign
,
который помещает результати их выполнения в переменную шаблона, вместо вывода
в браузер, практически как функция
{assign}
.
{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}
.