Инструкция по установке сматриx

advertisement
В дальнейшем будем предполагать, что у вас установлен веб-комплект Денвер и
вы тестируете свой сайт на локальном компьютере под управлением Windows.
Вначале скачайте последнюю версию Smarty с сайта http://smary.php.net и
распакуйте архив. Несмотря на обилие в архиве директорий и файлов, нас
интересует лишь одна папка libs.
Создайте на диске Z, который автоматически подключается после установки
Денвера, внутри home папку с именем вашего сайта и в нее добавьте папку libs.
Далее создайте еще одну папку с именем smarty, внутри которой располагаются
следующие подпапки: cache, config, templates, templates_c. Вся структура папок на
примере сайта webimg.ru приведена ниже.
Z:homewebimg.ru
libs
smarty
cache
config
templates
templates_c
www
Имена на приведенной схеме не зря выделены жирным начертанием. Для этих
папок необходимо установить права 770 [rwx rwx —] или 775 [rwx rwx r-x].
Поскольку под Windows подобные права никак не меняются, то этот пункт имеет
важность только при переносе сайта под *nix-сервер.
Каждая из папок Smarty несет определенную нагрузку. Так, папка cache содержит
кэшированные документы, предназначенные для ускорения работы сайта путем
сохранения результатов в файлы. Config содержит конфигурационные настройки,
templates это основная часть, содержащая все шаблоны, а templates_c ?
скомилированные шаблоны. При этом содержимое двух папок ? cache и
templates_c формируется автоматически.
В папке libs создайте файл setup.php, который будет содержать следующий код
(пример 1).
Пример 1. Содержимое файла setup.php
<?php
require ("Smarty.class.php");
class Smarty_WebImg extends Smarty {
function Smarty_WebImg() {
$this->Smarty();
$this->template_dir = "/home/webimg.ru/smarty/templates/";
$this->compile_dir = "/home/webimg.ru/smarty/templates_c/";
$this->config_dir = "/home/webimg.ru/smarty/configs/";
$this->cache_dir = "/home/webimg.ru/smarty/cache/";
}
}
?>
Класс Smarty_WebImg носит имя, которое устанавливается по желанию. Учтите
только, что оно будет применяться повсеместно. Далее идут пути ко всем
служебным директориям Smarty.
Теперь создаем шаблон главной страницы сайта, назовем его index.tpl и сохраним
в папке templates (пример 2).
Пример 2. Файл шаблона index.tpl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 //EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1251">
<title>{$title}</title>
</head>
<body>
<h1>Сайт WebImg.ru</h1>
<p>Все работает!</p>
</body>
</html>
Это обычный HTML-документ, единственное, что его отличает, это переменная
{$title}, она определяется в файле index.php, который располагается в папке www
(пример 3).
Пример 3. Содержимое файла index.php
<?php
require ("/home/webimg.ru/libs/setup.php");
$smarty = new Smarty_WebImg;
$smarty->assign("title", "Сайт WebImg.ru - главная страница");
$smarty->display("index.tpl");
?>
Вначале следует обратиться к файлу setup.php, который располагается в папке
libs, чтобы Smarty понимал, в каких папках следует искать шаблоны. Далее
создаем экземпляр Smarty с именем Smarty_WebImg (вспоминаем, что ранее сами
так его обозвали), при этом все настройки будут заданы автоматически.
Остается определить значение заданных в шаблоне переменных через метод
assign и загрузить требуемый шаблон с помощью метода display.
Окончательно проверяем работу всех компонентов, загрузив в браузере сайт
webimg.ru. Должна отобразиться страница с надписью ?Все работает!?.
Возможные ошибки при установке
Любые ошибки, возникающие при первой установке и настройки Smarty, как
правило, связаны с невнимательностью и решаются проверкой всех компонент, а
именно, файлов setup.php, index.tpl и index.php. Тем не менее, приведем
некоторые типичные ошибки.
Warning: require(/home/webimg.ru/libs/setup.php) [function.require]: failed to open
stream: No such file or directory in z:homewebimg.ruwwwindex.php on line 3
Вызываемый файл setup.php отсутствует в папке /home/webimg.ru/libs.
Fatal error: Class 'Smarty_WebImg' not found in z:homewebimg.ruwwwindex.php on
line 5
Имя класса Smarty_WebImg упоминается три раза, два из них в файле setup.php и
еще один в файле index.php. Проверьте, чтобы имена в этих документах писались
одинаково.
Warning: Smarty error: unable to read resource: "index.tpl" in
z:homewebimg.rulibsSmarty.class.php on line 1095
Ошибка в описании путей к требуемым директориям. Откройте файл setup.php и
удостоверьтесь, все ли заданные в переменных папки существуют и правильно ли
указан к ним путь.
Notice: Undefined variable: title in z:homewebimg.ruwwwindex.php on line 7
Скорее всего, переменная title записана как $title. Хотя в PHP все переменные
определяются со знаком $ впереди, Smarty использует это правило не во всех
случаях.
Fatal error: Smarty error: [in index.tpl line 5]: syntax error: unrecognized tag 'title'
(Smarty_Compiler.class.php, line 580) in z:homewebimg.rulibsSmarty.class.php on line
1095
Здесь ситуация с точностью до наоборот, в файле index.tpl заголовок вебстраницы записан как {title} без знака $.
Заметим также, что если указанный заголовок вообще не отображается, то,
скорее всего, переменная title задана неверно. Smarty в подобных случаях не
выводит сообщение об ошибке, но и не показывает значение переменной.
Download