Советы Обработка пустых переменных Иногда, например, для того чтобы фон таблицы работал корректно, необходимо вывести вместо пустого значения переменной, значение по умолчанию " ". Многие бы использовали конструкцию {if}, но есть более короткий путь в Smatry используя default модификатор переменной. Вывод  , если переменная пуста Обработка переменных по умолчанию Если переменная встречается часто, то использование модификатора default каждый раз можно избежать, используя функцию assign. Назначение переменной шаблона значения по умолчанию Присвоение переменной заголовка (title) заголовку шаблона. Если большинство ваших шаблонов имеют похожие верхние и нижние части, то имеет смысл вынести их в отдельные файлы. Но если шапка должна иметь различные заголовки на различных страницах? Смотрите пример ниже. Присвоение переменной заголовка (title) заголовку шаблона. {$title|default:"BC News"} footer.tpl ---------- ]]> Если выводится главная страница, то заголовок будет "Main Page", если архивы, то заголовк берется из файла конфигурации. Если заголовок будет пустой, то выведется значение по умолчанию "BC News". Даты Обычно даты в Smarty всегда передаются как временные метки, что позволяет проектировщикам шаблонов использовать date_format для полного контроля над форматированием даты и также делает легким сравнение дат там, где это необходимо. ЗАМЕЧАНИЕ: Начиная с версии Smarty 1.4.0 вы можете передавать дату в виде временной метки Unix (Unix timestamp), временной метки MySQL или в любом другом виде, который подерживается функцией PHP strtotime(). Использование date_format Когда {html_select_date} используется в шаблоне, программистам может понадобиться получить дату виде временной метки. Вот функция, которая поможет это сделать. Преобразование элементов формы ввода даты назад к временной метке WAP/WML WAP/WML шаблоны требуют, чтобы заголовок Content-type был передан вместе с шаблоном. Простейший путь - написать пользовательскую функцию, которая будет выводить заголовки. Так как мы будем пользоваться тэгами insert, то заголовки не будут кэшироваться. Так же ничего не должно выводиться в браузер до шаблона, иначе заголовки могут быть неправильно восприняты. Использование insert для записи WML Content-Type заголовков

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

Pretty easy isn't it?

]]>
Составные шаблоны This tip is a bit of a hack, but still a neat idea. Use at your own risk. ;-) Traditionally, programming templates into your applications goes as follows: First, you accumulate your variables within your PHP application, (maybe with database queries.) Then, you instantiate your Smarty object, assign the variables and display the template. So lets say for example we have a stock ticker on our template. We would collect the stock data in our application, then assign these variables in the template and display it. Now wouldn't it be nice if you could add this stock ticker to any application by merely including the template, and not worry about fetching the data up front? You can embed PHP into your templates with the {php}{/php} tags. With this, you can setup self contained templates with their own data structures for assigning their own variables. With the logic embedded like this, you can keep the template & logic together. This way no matter where the template source is coming from, it is always together as one component. componentized template assign("ticker_name",$ticker_name); $this->assign("ticker_price",$ticker_price); {/php} Stock Name: {$ticker_name} Stock Price: {$ticker_price} ]]> As of Smarty 1.5.0, there is even a cleaner way. You can include php in your templates with the {include_php ...} tag. This way you can keep your PHP logic separated from the template logic. See the include_php function for more information. componentized template with include_php assign("ticker_name",$ticker_name); $this->assign("ticker_price",$ticker_price); ?> index.tpl --------- {* Smarty *} {include_php file="load_ticker.php"} Stock Name: {$ticker_name} Stock Price: {$ticker_price} ]]> Obfuscating E-mail Addresses Do you ever wonder how your E-mail address gets on so many spam mailing lists? One way spammers collect E-mail addresses is from web pages. To help combat this problem, you can make your E-mail address show up in scrambled javascript in the HTML source, yet it it will look and work correctly in the browser. This is done with the mailto plugin. Example of Obfuscating an E-mail Address Technical Note This method isn't 100% foolproof. A spammer could conceivably program his e-mail collector to decode these values, but not likely.