Files
smarty/docs/ru/programmers/plugins/plugins-functions.xml
2008-05-25 15:06:11 +00:00

134 lines
4.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 0 Maintainer: tony2001 Status: ready -->
<sect1 id="plugins.functions">
<title>Функции шаблона</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_function_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Все атрибуты, передаваемые в функции шаблона из самого шаблона,
хранятся в <parameter>$params</parameter> в виде ассоциативного массива.
Получить доступ к его значениям можно напрямую:
<varname>$params['start']</varname> или используя
<varname>extract($params)</varname> для импорта в таблицу.
</para>
<para>
Вывод (возвращаемое значение) функции будет подставлен в место расположения
тэга функции в шаблоне (функция <function>fetch</function> например).
В качестве альтернативы, функция может выполнять какие либо действия
без какого-либо вывода (<function>assign</function> функция).
</para>
<para>
Если функция должна присвоить(assign) значения некоторым переменным в шаблоне или
использовать иные возможности Smarty, то можно работать с объектом
<parameter>$smarty</parameter> как обычно.
</para>
<para>
См. также:
<link linkend="api.register.function">register_function()</link>,
<link linkend="api.unregister.function">unregister_function()</link>.
</para>
<para>
<example>
<title>Функция-плагин с выводом</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: function.eightball.php
* Type: function
* Name: eightball
* Purpose: outputs a random magic answer
* -------------------------------------------------------------
*/
function smarty_function_eightball($params, &amp;$smarty)
{
$answers = array('Да',
'Нет',
'Никоим образом',
'Перспектива так себе...',
'Спросите позже',
'Все может быть');
$result = array_rand($answers);
return $answers[$result];
}
?>
]]>
</programlisting>
</example>
</para>
<para>
которая может быть использована в шаблоне следующим образом:
</para>
<programlisting>
<![CDATA[
Вопрос: Мы когда-нибудь найдем время для отпуска?
Ответ: {eightball}.
]]>
</programlisting>
<para>
<example>
<title>Функция-плагин без вывода</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: function.assign.php
* Type: function
* Name: assign
* Purpose: assign a value to a template variable
* -------------------------------------------------------------
*/
function smarty_function_assign($params, &amp;$smarty)
{
extract($params);
if (empty($var)) {
$smarty->trigger_error("assign: missing 'var' parameter");
return;
}
if (!in_array('value', array_keys($params))) {
$smarty->trigger_error("assign: missing 'value' parameter");
return;
}
$smarty->assign($var, $value);
}
?>
]]>
</programlisting>
</example>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->