View file manual-ru/language.function.insert.html

File size: 8.48Kb
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>{insert}</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="language.builtin.functions.html" title="Chapter 7. Встроенные функции">
<link rel="prev" href="language.function.include.php.html" title="{include_php}">
<link rel="next" href="language.function.ldelim.html" title="{ldelim},{rdelim}">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">{insert}</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.function.include.php.html">Prev</a> </td>
<th width="60%" align="center">Chapter 7. Встроенные функции</th>
<td width="20%" align="right"> <a accesskey="n" href="language.function.ldelim.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="{insert}">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.function.insert"></a>{insert}</h2></div></div></div>
<p>
  Тэг {insert} очень похож на тэг <a class="link" href="language.function.include.html" title="{include}">{include}</a>,
  за исключением того, что {insert} НЕ кэшируется, когда
  <a class="link" href="caching.html" title="Chapter 14. Кэширование">кэширование</a> включено.
  Он будет выполнен при каждом обращении к шаблону.
 </p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">Имя атрибута</th>
<th align="center">Тип</th>
<th align="center">Обязателен</th>
<th align="center">По умолчанию</th>
<th>Описание</th>
</tr></thead>
<tbody>
<tr>
<td align="center">name</td>
<td align="center">string</td>
<td align="center">Да</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>Имя функции вставки (insert_name)</td>
</tr>
<tr>
<td align="center">assign</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>Имя переменной, которой будет
    присвоен вывод</td>
</tr>
<tr>
<td align="center">script</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>Имя php файла, который будет подключен
    перед вызовом функции вставки</td>
</tr>
<tr>
<td align="center">[var ...]</td>
<td align="center">[var type]</td>
<td align="center">Нет</td>
<td align="center"><span class="emphasis"><em>n/a</em></span></td>
<td>Переменные, передаваемые в
    функцию вставки</td>
</tr>
</tbody>
</table></div>
<p>
  Допустим, вы имеете шаблон с баннером вверху страницы.
  Баннер может содержать любую смесь HTML, изображений,
  flash и т.д., то есть нельзя использовать просто
  статическую ссылку, и мы не хотим, чтобы код баннера
  кэшировался с остальной страницей. Тогда используем
  тэг {insert}: шаблон знает значения #banner_location_id# и
  #site_id# (взяты из <a class="link" href="config.files.html" title="Chapter 9. Конфигурационные файлы">конфигурационного файла</a>)
  и должен вызвать функцию, чтобы получить код баннера.
 </p>
<div class="example">
<a name="id2673691"></a><p class="title"><b>Example 7.22. функция {insert}</b></p>
<div class="example-contents"><pre class="programlisting">
{* пример вставки баннера *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
  </pre></div>
</div>
<br class="example-break"><p>
  В этом примере мы используем имя "getBanner" и передаем параметры
  #banner_location_id# и #site_id#. Smarty попробует вызвать
  функцию insert_getBanner() в вашей PHP программе, передав
  значения #banner_location_id# и #site_id# первым параметром в виде
  ассоциативного массива. Все имена функций вставки должны начинаться
  с "insert_" для предотвращения возможных конфликтов имен. Функция
  insert_getBanner() должна обработать переданные переменные и
  вернуть	результат. Он будет отображен в шаблоне вместо тэга {insert}.
  В данном случае Smarty вызовет функцию insert_getBanner(array("lid"
  =&gt; "12345","sid" =&gt; "67890")); и выведет результат на месте тэга
  {insert}.
	</p>
<p>
  Если указан атрибут "assign", то вывод функции вставки будет
  присвоен указанной переменной вместо отображения. ЗАМЕЧАНИЕ:
  присвоение вывода тэга {insert} переменной шаблона не очень
  полезно, когда <a class="link" href="variable.caching.html" title="$caching">кеширование</a> включено.
	</p>
<p>
  Если указан атрибут "script", то указанный PHP-файл будет
  подключен (только однажды) перед вызовом функции вставки.
  Это удобно, когда функция может не сущетсвовать, и должен быть
  подключен PHP-файл, чтобы определить функцию. Путь к файлу
  должен быть либо абсолтным, либо относительным относительно
  $trusted_dir. Когда включен режим <a class="link" href="variable.security.html" title="$security">$security</a>, PHP-файл должен
  быть в папке <a class="link" href="variable.trusted.dir.html" title="$trusted_dir">$trusted_dir</a>.
	</p>
<p>
  Обьект Smarty передается в функцию как второй параметр.
  Так вы можете использовать и модифицировать информацию
  из объекта Smarty в функциях вставки.
	</p>
<div class="note" title="Техническое Замечание" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Техническое Замечание</h3>
<p>
   Некоторые части шаблона можно не кэшировать.
   Если активировано <a class="link" href="caching.html" title="Chapter 14. Кэширование">кэширование</a>,
   то тэг {insert} все равно не будет кэширован. Он будет вызван
   каждый раз при генерации страницы, даже из кешированных
   страниц. Это полезно для таких вещей, как баннеры, опросы,
   прогнозы погоды, результаты поиска, области обратной связи
   и т.д.
		</p>
</div>
<p>
  См. также
  <a class="link" href="language.function.include.html" title="{include}">{include}</a>
 </p>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.function.include.php.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="language.builtin.functions.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.function.ldelim.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">{include_php} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> {ldelim},{rdelim}</td>
</tr>
</table>
</div>
</body>
</html>