Блоковые функции выглядят следующим образом: {func} .. {/func}. Другими словами, они заключены в определенном блоке шаблона и оперируют содержимым этого блока. Блоковые функции имеют приоритет перед пользовательскими функциями, имеющими то же имя, поэтому, вы не сможете использовать одновременно свои функции вида {func} и блоковые функции {func} .. {/func}.
Smarty вызывает ваши функции дважды: первый раз при открытии тэга и второй раз при закрытии тэга.
Только открывающий тэг блоковой функции может иметь атрибуты. Все атрибуты, переданные в функцию из шаблона сохраняются в $params в виде ассоциативного массива. Вы можете получить прямой доступ к их значениям: $params['start'] или использовать extract($params) для импорта. Атрибуты, переданные в открывающем тэге доступны для вашей функции до обработки закрывающего тэга включительно.
Значение переменной $content зависит от того, вызывается ли ваша функция для открывающего тэга или вызов происходит при закрытии тэга. В случае с открывающим тэгом, это значение будет равно null, а в случае закрывающего тэга, значение будет равно содержимому блока в шаблоне. Заметьте, что этот блок шаблона уже будет обработан Smarty и на выводе вы получите результат обработки, а не исходный код шаблона.
Параметр &$repeat передается по ссылке в функцию и дает ей возможность контролировать количество отображений блока. По умолчанию $repeat равен true во время первого вызова блоковой функции (открывающий тэг блока) и false при всех последующих вызовах блоковой функции (закрывающий тэг блока). Каждый раз, когда ваша функция возвращает параметр &$repeat равный true, содержимое между {func} .. {/func} обрабатывается и ваша функция вновь вызывается, причем новое содержимое блока передается в параметре $content.
Если вы используете вложенные блоковые функции, есть возможность определять родительские блоковые функции. Достаточно получить значение переменной $smarty->_tag_stack. Затем останется только применить var_dump() для нее и структура будет видна.
Смотрите также: register_block(), unregister_block().
Пред. | Начало | След. |
Модификаторы | Уровень выше | Функции компилятора |
HIVE: All information for read only. Please respect copyright! |