Просмотр файла manual-ru/plugins.functions.html

Размер файла: 6.28Kb
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>Функции шаблона</title>
  5. <meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
  6. <link rel="home" href="index.html" title="Руководство по Smarty">
  7. <link rel="up" href="plugins.html" title="Chapter 16. Плагины - расширение функциональности Smarty">
  8. <link rel="prev" href="plugins.writing.html" title="Написание плагинов">
  9. <link rel="next" href="plugins.modifiers.html" title="Модификаторы">
  10. </head>
  11. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  12. <div class="navheader">
  13. <table width="100%" summary="Navigation header">
  14. <tr><th colspan="3" align="center">Функции шаблона</th></tr>
  15. <tr>
  16. <td width="20%" align="left">
  17. <a accesskey="p" href="plugins.writing.html">Prev</a> </td>
  18. <th width="60%" align="center">Chapter 16. Плагины - расширение функциональности Smarty</th>
  19. <td width="20%" align="right"> <a accesskey="n" href="plugins.modifiers.html">Next</a>
  20. </td>
  21. </tr>
  22. </table>
  23. <hr>
  24. </div>
  25. <div class="sect1" title="Функции шаблона">
  26. <div class="titlepage"><div><div><h2 class="title" style="clear: both">
  27. <a name="plugins.functions"></a>Функции шаблона</h2></div></div></div>
  28. <div class="funcsynopsis">
  29. <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table">
  30. <tr>
  31. <td><code class="funcdef">void <b class="fsfunc">smarty_function_name</b>(</code></td>
  32. <td>
  33. <var class="pdparam">$params</var>, </td>
  34. <td> </td>
  35. </tr>
  36. <tr>
  37. <td> </td>
  38. <td>
  39. <var class="pdparam">&amp;$smarty</var><code>)</code>;</td>
  40. <td> </td>
  41. </tr>
  42. </table>
  43. <div class="paramdef-list">
  44. <code>array <var class="pdparam">$params</var></code>;<br><code>object <var class="pdparam">&amp;$smarty</var></code>;</div>
  45. <div class="funcprototype-spacer"> </div>
  46. </div>
  47. <p>
  48. Все атрибуты, передаваемые в функции шаблона из самого шаблона,
  49. хранятся в <em class="parameter"><code>$params</code></em> в виде ассоциативного массива.
  50. Получить доступ к его значениям можно напрямую:
  51. <code class="varname">$params['start']</code> или используя
  52. <code class="varname">extract($params)</code> для импорта в таблицу.
  53. </p>
  54. <p>
  55. Вывод (возвращаемое значение) функции будет подставлен в место расположения
  56. тэга функции в шаблоне (функция <code class="function">fetch</code> например).
  57. В качестве альтернативы, функция может выполнять какие либо действия
  58. без какого-либо вывода (<code class="function">assign</code> функция).
  59. </p>
  60. <p>
  61. Если функция должна присвоить(assign) значения некоторым переменным в шаблоне или
  62. использовать иные возможности Smarty, то можно работать с объектом
  63. <em class="parameter"><code>$smarty</code></em> как обычно.
  64. </p>
  65. <p>
  66. См. также:
  67. <a class="link" href="api.register.function.html" title="register_function">register_function()</a>,
  68. <a class="link" href="api.unregister.function.html" title="unregister_function">unregister_function()</a>.
  69. </p>
  70. <p>
  71. </p>
  72. <div class="example">
  73. <a name="id2740364"></a><p class="title"><b>Example 16.1. Функция-плагин с выводом</b></p>
  74. <div class="example-contents"><pre class="programlisting">
  75.  
  76. &lt;?php
  77. /*
  78. * Smarty plugin
  79. * -------------------------------------------------------------
  80. * File: function.eightball.php
  81. * Type: function
  82. * Name: eightball
  83. * Purpose: outputs a random magic answer
  84. * -------------------------------------------------------------
  85. */
  86. function smarty_function_eightball($params, &amp;amp;$smarty)
  87. {
  88. $answers = array('Да',
  89. 'Нет',
  90. 'Никоим образом',
  91. 'Перспектива так себе...',
  92. 'Спросите позже',
  93. 'Все может быть');
  94.  
  95. $result = array_rand($answers);
  96. return $answers[$result];
  97. }
  98. ?&gt;
  99.  
  100. </pre></div>
  101. </div>
  102. <p><br class="example-break">
  103. </p>
  104. <p>
  105. которая может быть использована в шаблоне следующим образом:
  106. </p>
  107. <pre class="programlisting">
  108.  
  109. Вопрос: Мы когда-нибудь найдем время для отпуска?
  110. Ответ: {eightball}.
  111.  
  112. </pre>
  113. <p>
  114. </p>
  115. <div class="example">
  116. <a name="id2740423"></a><p class="title"><b>Example 16.2. Функция-плагин без вывода</b></p>
  117. <div class="example-contents"><pre class="programlisting">
  118.  
  119. &lt;?php
  120. /*
  121. * Smarty plugin
  122. * -------------------------------------------------------------
  123. * File: function.assign.php
  124. * Type: function
  125. * Name: assign
  126. * Purpose: assign a value to a template variable
  127. * -------------------------------------------------------------
  128. */
  129. function smarty_function_assign($params, &amp;amp;$smarty)
  130. {
  131. extract($params);
  132.  
  133. if (empty($var)) {
  134. $smarty-&gt;trigger_error("assign: missing 'var' parameter");
  135. return;
  136. }
  137.  
  138. if (!in_array('value', array_keys($params))) {
  139. $smarty-&gt;trigger_error("assign: missing 'value' parameter");
  140. return;
  141. }
  142.  
  143. $smarty-&gt;assign($var, $value);
  144. }
  145. ?&gt;
  146.  
  147. </pre></div>
  148. </div>
  149. <p><br class="example-break">
  150. </p>
  151. </div>
  152. <div class="navfooter">
  153. <hr>
  154. <table width="100%" summary="Navigation footer">
  155. <tr>
  156. <td width="40%" align="left">
  157. <a accesskey="p" href="plugins.writing.html">Prev</a> </td>
  158. <td width="20%" align="center"><a accesskey="u" href="plugins.html">Up</a></td>
  159. <td width="40%" align="right"> <a accesskey="n" href="plugins.modifiers.html">Next</a>
  160. </td>
  161. </tr>
  162. <tr>
  163. <td width="40%" align="left" valign="top">Написание плагинов </td>
  164. <td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
  165. <td width="40%" align="right" valign="top"> Модификаторы</td>
  166. </tr>
  167. </table>
  168. </div>
  169. </body>
  170. </html>