Разработчику. Сборник рецептов PHP
Задавайте вопросы

Использование шаблонов системы Smarty

Вернуться назад

Задача

Необходимо разделить код и дизайн страниц. Дизайнеры смогут работать над файлами HTML, не касаясь программы PHP, а программисты смогут работать над PHP-кодом, не заботясь о дизайне.

Решение

Применяйте систему шаблонов. Одна из систем, с которой нетрудно работать, называется Smarty. В шаблоне Smarty строки в фигурных скобках заменяются новыми значениями:

Hello, {$name}

PHP-программа, создающая страницу, устанавливает переменные, а затем выводит шаблон, как показано ниже:

require 'Smarty.class.php';

$smarty = new Smarty;
$smarty->assign('name','Ruby');
$smarty->display('hello.tpl');

Обсуждение

Следующий шаблон предназначен для отображения строк, извлеченных из базы данных:

<html>
<head><title>cheeses</title></head>
<body>
<table border="1">
<tr>
     <th>cheese</th>
     <th>country</th>
<th>price</th>
</tr>
{section name=id loop=$results}
<tr>
     <td>{$results[id]->cheese}</td>
     <td>{$results[id]->country}</td>
     <td>{$results[id]->price}</td>
</tr>
{/section}
</table>
</body>
</html>

Далее показан соответствующий PHP-файл, который загружает информацию из базы данных, а затем показывает шаблон, хранящийся в файле food.tpl:

require 'Smarty.class.php';

mysql_connect('localhost','test','test');
mysql_select_db('test');

$r = mysql_query('SELECT * FROM cheese');
while ($ob = mysql_fetch_object($r)) {
     $ob->price = sprintf('$%.02f',$ob->price);
     $results[] = $ob;

}
$smarty = new Smarty;
$smarty->assign('results',$results);
$smarty->display('food.tpl');

После включения базового класса движка шаблонов (Smarty.class.php), результаты извлекаются из базы данных, форматируются, а затем помещаются в массив. Для того чтобы сгенерировать шаблонную страницу, достаточно создать новый объект $smarty, сказать ему, чтобы он обратил внимание на переменную $results, а затем приказать объекту $smarty показать шаблон.

Систему Smarty легко инсталлировать – достаточно скопировать новые файлы в ваш каталог include_path и создать новые каталоги.

Работая с системой Smarty, соблюдайте дисциплину, это поможет сохранить основное назначение шаблонов – разделять логику и представление. Движок шаблонов имеет свой собственный язык сценариев, который можно использовать для получения значения переменных, выполнения циклов и реализации других простых алгоритмов. Постарайтесь свести его использование в своих шаблонах к минимуму, а всю логику программы поместить в PHP-файл.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ