Приднестровская поддержка XOOPS
Со страницы http://www.smarty.net/download скачиваем архив Smarty-3.1.8.zip (На момент написания, возможно, есть более свежая версия) и распаковываем его в текущую папку. Из этого архива нам понадобится папка libs. Переименовываем ее в smarty и копируем в C:\Apache2.
Таким образом, файл Smarty.class.php должен быть расположен в C:\Apache2\smarty. Путь к этой папке следует указать внутри скрипта в константе SMARTY_DIR:
define('SMARTY_DIR', 'C:/Apache2/smarty/');
В C:\Apache2\smarty создаем каталог site1, а внутри него четыре папки:
□ templates — здесь будем размещать создаваемые шаблоны;
□ templates_c — при первой загрузке шаблона он автоматически преобразуется в соответствующий PHP-код, который сохраняется в этой папке. PHP-код создается только один раз при первом запуске, а также после изменения текущего шаблона. Каждый последующий запуск скрипта, использующего шаблон, будет приводить к выполнению PHP-кода, а не новой компиляции шаблона. Изменять файлы из этой папки вручную не следует;
□ configs — для файлов с глобальными переменными. Файлы из этой папки следует загружать внутри шаблона с помощью инструкции {config_load};
□ cache — для кэшированных страниц.
Местоположение этих папок задается с помощью свойств template_dir, compile_dir, config_dir и cache_dir соответственно. Чтобы в каждом скрипте не указывать путь, создадим новый класс, наследующий все свойства и методы класса Smarty, а также определяющий местоположение папок (листинг 75).
Листинг 75. Содержимое файла MySmarty.php
<?php
define('SMARTY_DIR', 'C:/Apache2/smarty/');
require_once(SMARTY_DIR . 'Smarty.class.php');
class MySmarty extends Smarty {
function MySmarty() { // Конструктор класса
$this->Smarty();
$this->template_dir = 'C:/Apache2/smarty/site1/templates/';
$this->compile_dir = 'C:/Apache2/smarty/site1/templates_c/';
$this->config_dir = 'C:/Apache2/smarty/site1/configs/';
$this->cache_dir = 'C:/Apache2/smarty/site1/cache/';
}
}
?>
Этот файл мы будем подключать во всех скриптах. Разместить файл необходимо в одной папке со скриптом или в одном из каталогов, указанных в директиве include_path.
Теперь проверим Smarty на работоспособность. Для этого в папке C:\Apache2\smarty\site1\templates создаем файл index.tpl и добавляем в него код из листинга 76.
Листинг 76. Содержимое шаблона C:\Apache2\smarty\site1\templates\index.tpl
{* Smarty *}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>{$title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
{* Это комментарий внутри шаблона. В HTML не попадет *}
<!-- Это HTML-комментарий. Отображается в HTML-документе -->
<div>Привет, {$name}. Smarty работает!</div>
</body>
</html>
Листинг 5.77. Содержимое файла C:\Apache2\htdocs\index.php
<?php
require_once('MySmarty.php'); // См. листинг 5.75
$smarty = new MySmarty();
// Указываем значения для переменных внутри шаблона
$smarty->assign('title', 'Первый шаблон');
$smarty->assign('name', 'Николай');
// Выводим шаблон
$smarty->display('index.tpl');
?>
Все, что расположено между символами {* и *}, является комментарием, который доступен только внутри шаблона. Он не попадает в исходный HTML-код страницы. Инструкции {$title} и {$name} в дальнейшем будут заменены на значения, указанные в методе assign() (листинг 77).
Листинг 77. Содержимое файла C:\Apache2\htdocs\index.php
<?php
require_once('MySmarty.php'); // См. листинг 5.75
$smarty = new MySmarty();
// Указываем значения для переменных внутри шаблона
$smarty->assign('title', 'Первый шаблон');
$smarty->assign('name', 'Николай');
// Выводим шаблон
$smarty->display('index.tpl');
?>
В первой строке подключается файл, содержащий класс MySmarty (листинг 75). В следующей строке создается экземпляр класса. Далее с помощью метода assign() указываются значения для переменных внутри шаблона. Чтобы вывести результат в окно Web-браузера вызывается метод display(), в параметре которого указывается название шаблона. Результат выполнения программы приведен в листинге 78.
Листинг 78. Результат выполнения листинга 77
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Первый шаблон</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<!-- Это HTML-комментарий. Отображается в HTML-документе -->
<div>Привет, Николай. Smarty работает!</div>
</body>
</html>
Как видно из примера, инструкции {$title} и {$name} были заменены на значения, указанные в методе assign(). Никаких признаков Smarty в исходном HTML-коде нет. Теперь откроем файл, который был автоматически создан в папке C:\Apache2\smarty\site1\templates_c после компиляции шаблона. Содержимое файла показано в листинге 79.
Листинг 79. Результат компиляции шаблона index.tpl
<?php /* Smarty version 2.6.26, created on 2009-11-16 12:27:00
compiled from index.tpl */ ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title><?php echo $this->_tpl_vars['title']; ?>
</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<!-- Это HTML-комментарий. Отображается в HTML-документе -->
<div>Привет, <?php echo $this->_tpl_vars['name']; ?>
. Smarty работает!</div>
</body>
</html>
Все инструкции Smarty в этом файле заменены на фрагменты PHP-кода. Данный файл создается только один раз и изменяется только после редактирования шаблона. Во всех остальных случаях запускается PHP-код из этого файла. Таким образом достигается высокая производительность. Еще раз напомним, что изменять этот файл вручную не следует. Все изменения должны вноситься в шаблон.
Отправитель | Нити |
---|
7 пользователь(ей) активно (6 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 7 далее... |