smarty template engine
Tuesday, October 07, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


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

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

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

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




 

credits 

Smarty Copyright © 2002-2008
New Digital Group, Inc.

All rights reserved.