Документация Smarty


Блоковые функции

void smarty_block_name (array $params, mixed $content, object &$smarty, boolean &$repeat)

Блоковые функции выглядят следующим образом: {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().

Пример 16-5. Блоковая функция

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Файл:     block.translate.php
 * Тип:     block
 * Имя:     translate
 * Назначение:  перевести блок (кусок) текста
 * -------------------------------------------------------------
 */
function smarty_block_translate($params$content, &amp;$smarty)
{
    if (
$content) {
        
$lang $params['lang'];
        
// здесь выполнить интеллектуальный перевод строки $content
        
echo $translation;
    }
}
?>
SAPE все усложнил?

MainLink - простая и прибыльная продажа ссылок!

Последние поступления:

Размещена 10 августа 2020 года

Я по ТВ видел, что через 10 лет мы будем жить лучше, чем в Германии...
Я не понял, что это они с Германией сделать хотят?!

читать далее…

ТехЗадание на Землю

Размещена 14 марта 2018 года

Пpоект Genesis (из коpпоpативной пеpеписки)

читать далее…

Шпаргалка по работе с Vim

Размещена 05 декабря 2017 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

читать далее…

Ошибка: Error: Cannot find a valid baseurl for repo

Размещена 13 сентабря 2017 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

читать далее…

Linux Optimization

Размещена 30 июля 2012 года

Prelink

читать далее…