Блоковые функцииvoid smarty_block_namearray $paramsmixed $contentobject &$smarty
Блоковые функции выглядят следующим образом: {func} .. {/func}. Другими словами,
они заключены в определенном блоке шаблона и оперируют содержимым этого блока.
Блоковые функции имеют приоритет перед пользовательскими функциями, имеющими то же имя,
поэтому, вы не сможете использовать одновременно свои функции вида {func} и
блоковые функции {func} .. {/func}.
Smarty вызывает ваши функции дважды:
первый раз при открытии тэга и второй раз при закрытии тэга.
Только открывающий тэг блоковой функции может иметь атрибуты. Все
атрибуты, переданные в функцию из шаблона сохраняются
в $params в виде ассоциативного массива. Вы можете
получить прямой доступ к их значениям:
$params['start'] или использовать
extract($params) для импорта.
Атрибуты, переданные в открывающем тэге доступны для вашей функции
до обработки закрывающего тэга включительно.
Значение переменной $content зависит от того,
вызывается ли ваша функция для открывающего тэга или вызов происходит при закрытии тэга.
В случае с открывающим тэгом, это значение будет равно null, а в случае
закрывающего тэга, значение будет равно содержимому блока в шаблоне.
Заметьте, что этот блок шаблона уже будет обработан
Smarty и на выводе вы получите результат обработки, а не
исходный код шаблона.
Если вы используете вложенные блоковые функции, есть возможность определять родительские
блоковые функции. Достаточно получить значение переменной
$smarty->_tag_stack. Затем останется только применить var_dump()
для нее и структура будет видна.
Смотрите также:
register_block(),
unregister_block().
Блоковая функция
]]>