Files
smarty/docs/ru/programmers/plugins/plugins-block-functions.xml
tony2001 5c60a94322 add new translations by nw [at] webdevel [dot] ru
(with minor corrections by me)
2004-06-11 06:26:26 +00:00

102 lines
3.4 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="windows-1251"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 -->
<sect1 id="plugins.block.functions">
<title>Блоковые функции</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_block_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>mixed <parameter>$content</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Блоковые функции выглядят следующим образом: {func} .. {/func}. Другими словами,
они заключены в определенном блоке шаблона и оперируют содержимым этого блока.
Блоковые функции имеют приоритет перед пользовательскими функциями, имеющими то же имя,
поэтому, вы не сможете использовать одновременно свои функции вида {func} и
блоковые функции {func} .. {/func}.
</para>
<para>
Smarty вызывает ваши функции дважды:
первый раз при открытии тэга и второй раз при закрытии тэга.
</para>
<para>
Только открывающий тэг блоковой функции может иметь атрибуты. Все
атрибуты, переданные в функцию из шаблона сохраняются
в <parameter>$params</parameter> в виде ассоциативного массива. Вы можете
получить прямой доступ к их значениям:
<varname>$params['start']</varname> или использовать
<varname>extract($params)</varname> для импорта.
Атрибуты, переданные в открывающем тэге доступны для вашей функции
до обработки закрывающего тэга включительно.
</para>
<para>
Значение переменной <parameter>$content</parameter> зависит от того,
вызывается ли ваша функция для отрывающего тэга или вызов происходит при закрытии тэга.
В случае с открывающим тэгом, это значение будет равно <literal>null</literal>, а в случае
закрывающего тэга, значение будет равно содержимому блока в шаблоне.
Заметьте, что этот блок шаблона уже будет обработан
Smarty и на выводе вы получите результат обработки, а не
исходный код шаблона.
</para>
<para>
Если вы используете вложенные блоковые функции, есть возможность определять родительские
блоковые функции. Достаточно получить значение переменной
<varname>$smarty->_tag_stack</varname>. Затем останется только применить var_dump()
для нее и структура будет видна.
</para>
<para>
Смотрите также:
<link linkend="api.register.block">register_block()</link>,
<link linkend="api.unregister.block">unregister_block()</link>.
</para>
<example>
<title>Блоковая функция</title>
<programlisting>
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Файл: block.translate.php
* Тип: block
* Имя: translate
* Назначение: перевести блок (кусок) текста
* -------------------------------------------------------------
*/
function smarty_block_translate($params, $content, &amp;$smarty)
{
if ($content) {
$lang = $params['lang'];
// здесь выполнить интеллектуальный перевод строки $content
echo $translation;
}
}
?>
]]>
</programlisting>
</example>
</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
-->