СоветыОбработка пустых переменных
Иногда, например, для того чтобы фон таблицы работал корректно,
необходимо вывести вместо пустого значения переменной, значение
по умолчанию " ". Многие бы использовали конструкцию
{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}.