Советы Обработка пустых переменных Иногда, например, для того чтобы фон таблицы работал корректно, необходимо вывести вместо пустого значения переменной, значение по умолчанию " ". Многие бы использовали конструкцию {if}, но в Smatry есть более короткий путь - используя модификатор переменной default. Вывод  , если переменная пуста См. также default и Обработка переменных по умолчанию. Обработка переменных по умолчанию Если переменная встречается часто, то использование модификатора default каждый раз можно избежать, используя функцию {assign}. Назначение переменной шаблона значения по умолчанию См. также default и Обработка пустых переменных. Присвоение переменной заголовка (title) шаблону-шапке Если большинство ваших шаблонов имеют похожие верхние и нижние части, то имеет смысл вынести их в отдельные файлы. Но как быть, если шапка должна иметь различные заголовки на различных страницах? Вы можете передавать текст заголовка шапке в качестве атрибута в момент её включения. Присвоение переменной заголовка (title) шаблону-шапке mainpage.tpl - когда отображается главная страница, заголовок "Main Page" передается в header.tpl, и будет в последствии использован в качестве заголовка. archives.tpl - когда отображается страница архива, заголовок будет "Archives". Обратите внимание, что в этом примере мы используем переменную из archives_page.conf, вместо того, чтобы жестко прописать её в шаблоне. header.tpl - Обратите внимание, что "Smarty News" отображается тогда, когда $title не задан, благодаря модификатору default. {$title|default:'Smarty News'} ]]> footer.tpl ]]> Даты Обычно даты в Smarty всегда передаются как временные метки, что позволяет проектировщикам шаблонов использовать date_format для полного контроля над форматированием даты и также делает легким сравнение дат там, где это необходимо. Начиная с версии Smarty 1.4.0, вы можете передавать даты в Smarty в виде меток времени Unix (unix timestamps), mysql, или в любом другом виде, который понимает функция strtotime(). using date_format Результат работы: Результат работы: Когда {html_select_date} используется в шаблоне, программист наверняка захочет преобразовать данные из формы назад в формат метки времени. Вот функция, которая поможет вам сделать это. Преобразование элементов формы ввода даты назад к метке времени ]]> См. также {html_select_date}, {html_select_time}, date_format и $smarty.now WAP/WML WAP/WML шаблоны требуют, чтобы заголовок Content-type был передан вместе с шаблоном. Простейший путь - написать пользовательскую функцию, которая будет выводить заголовки. Если вы используете кэширование, это не сработает, так что мы сделаем это с помощью тэга {insert}; не забывайте, что тэги {insert} не кэшируются! Убедитесь, что перед шаблоном в браузер ничего не выводится, иначе отправить заголовок не получится. Использование {insert} для записи заголовка Content-Type для WML ]]> ваш шаблон Smarty должен начинаться с тэга insert:

Welcome to WAP with Smarty! Press OK to continue...

Pretty easy isn't it?

]]>
Составные шаблоны По традиции, программирование шаблонов в вашем приложении идёт следующим путём: Сначала вы формируете переменные внутри вашего приложения PHP (возможно, используя запросы к базе данных). Затем вы создаёте экземпляр объекта Smarty, назначаете переменные и отображаете шаблон. Давайте представим себе такую ситуацию: К примеру, у нас есть котировщик ценных бумаг в нашем шаблоне. Мы собираем данные о котировках ценных бумаг в нашем приложении, затем передаём эти переменные в шаблон и отображаем его. Правда, было бы здорово, если бы этот котировщик можно было перенести в другое приложение, просто подключив к нему шаблон, не беспокоясь об источнике данных. Вы можете сделать это, написав собственное расширение для получения данных и присваивания их переменной шаблона. составной шаблон function.load_ticker.php - поместите файл в директорию $plugins assign($params['assign'], $ticker_info); } ?> ]]> index.tpl См. также {include_php}, {include} и {php}. Сокрытие E-mail адреса Вы когда-нибудь удивлялись, как ваш e-mail адрес попадает в такое количество спамерских рассылок? Один из способов сбора e-mail адресов заключается в просмотре веб-страниц. Чтобы помочь предотвратить эту проблему, вы можете сделать так, чотбы ваш e-mail адрес отображался в скрытом за javascript'ом виде в HTML-исходниках, в то же время выглядя и работая корректно в браузере. Это можно совершить при помощи расширения {mailto}. Пример сокрытия e-mail адреса Техническое Замечание Этот метод не может гарантировать 100% защиты. Существует вероятность, что спамер запрограммирует свой сборщик e-mail адресов на раскодирование этих значений, но это маловероятно... будем надеяться... пока что... куда я там дел свой квантовый компьютер :-?. См. также escape и {mailto}.