Чтобы начать пользоваться Smarty, вы должны выполнить несколько шагов для его правильной инсталляции. Во-первых, необходимо загрузить последнюю версию Smarty, которая доступна по адресу h t t p : //smarty.php.net. После того, как вы получите и распакуете Smarty, будет создано множество каталогов с файлами. Из них всех только небольшая часть представляют собой сам механизм Smarty — три класса (Smarty.class.php, Smarty_Compile.class.php и Conf ig_File. class .php) и каталог plugins. Все три файла нужно скопировать в каталог, находящийся в пути включаемых файлов вашей инсталляции РНР. Если нет возможности поместить их в такой каталог (например, у вас нет доступа к файлу php. i n i или файлам . htaccess), имеется два варианта: Вариант 1. Можете скопировать эти файлы в каталог и затем установить значение include_path во время выполнения с помощью PHP-функций ini_set () и ini_get ():
ini_get("include_path").";/path/to/smarty/files/"); ?> Вариант 2. Можете скопировать эти файлы в каталог и определить константу SMARTY_DIR, равную имени этого каталога, прежде чем использовать механизм Smarty:
Следующий шаг процесса инсталляции — это создание, по меньшей мере, трех (возможно, четырех) каталогов для использования Smarty. Когда вы будете создавать эти каталоги, важно помнить о последствиях для безопасности и поступать соответственно. Ниже представлен список каталогов, которые понадобятся Smarty.
НА ЗАМЕТКУ Имена этих каталогов можно изменить. Однако если вы решите это сделать, такие измене- ния следует учесть при конфигурировании переменных классов Smarty templates Этот каталог должен находиться вне дерева Web-документов.
Используется для сохранения шаблонов, используемых Smarty. templates_c Этот каталог должен находиться в дереве Web-документов и использоваться для скомпилированных шаблонов (РНР-сценариев), которые непосредственно выполняются для отображения Web-страниц. Этот каталог должен быть доступен для записи РНР и Web-серверу. conf igs Этот каталог должен располагаться вне дерева Web-документов и использоваться для хранения конфигурационных файлов, необходимых шаблонам, созданным Smarty (описаны далее). cache Этот каталог должен располагаться вне дерева Web-документов и используется для хранения кэшированных шаблонов (описаны далее). Каталог должен быть доступен для записи РНР и Web-серверу. К каждому из этих каталогов должны быть назначены соответствующие права доступа РНР (conf igs и templates могут быть доступны только для чтения, к остальным необходим доступ для записи). Для тех, кто не знаком с этой терминологией, фраза "вне дерева Web-документов" означает каталог, который не доступен через Web-сервер с помощью браузера. После того, как вы скопируете соответствующие файлы и создадите необходимые каталоги, следующим шагом будет настройка механизма Smarty. Это делается путем открытия файла Smarty .class .php и модификации соответствующих переменныхчленов (определены в начале класса). Хотя в самом классе кратко описана каждая из переменных, ниже представлено руководство по некоторым важным конфигурационным переменным, доступным механизму Smarty. $template_dir Путь поиска шаблонов для использования Smarty — указывает на каталог с только что заданным вами именем (по умолчанию templates). $compile_dir Путь, где Smarty будет сохранять скомпилированные версии шаблонов (по умолчанию templates__c). $plugins_dir Путь (пути), где Smarty ищет подключаемые модули для механизма. Это значение представляет собой массив РНР-строк, каждая из которых — это путь, где можно найти подключаемый модуль. (Поумолчанию array ('plugins')). $compile_check Определяет, будет ли Smarty проверять необходимость перекомпиляции. Если это значение не установлено равным true, Smarty никогда не обновит и не перекомпилирует модифицированные шаблоны (по умолчанию true). После завершения модификации конфигурационных переменных потребуется протестировать Smarty, дабы убедиться, что все работает правильно. Чтобы сделать это, нужно создать два файла, содержимое которых представлено в листингах 7.7 и 7.8, с именами, соответственно, test_template.tpl и test_smarty.php.
Листинг 7.7. Тестовый шаблон для Smarty
Следующим значением должно быть 'PHP Unleashed':<BR> {$testvar} <BRXBR> Ниже должна следовать таблица с числами от 1 до 10:
<TABLE CELLPADDING=3 BORDER=1> <TR> {section name=testsection loop=$testdata} <TD>{$testdata[testsection]}</TD> {/section} , </TR> </TABLE> <BR> Во фразе M$testvar)' содержится {$testvar|count_characters} символов.
Листинг 7.8. тестовый сценарий для Smarty <?php require("Smarty.class.php"); $smarty = new Smarty; $smarty->assign("testvar", 'PHP Unleashed'); . . $smarty->assign("testdata", range (1,10)); $smarty->display("test_template.tpl");
Чтобы протестировать полученную инсталляцию Smarty, поместите testtemplate.tpl в каталог templates (или как там вы его назовете), a test_smarty .php — в дерево Web-документов. Затем откройте браузер и попытайтесь загрузить с Web-сервера файл test_smarty.php. J-.i'v "lp.».i EJ« Its6p»+«e Серей: On Адрес: |^htlp://ocahostAest_smarty.php J M Щ Пёр*ход . Ссылки Следующим значением должно быть 'PHP Unleashed':
PHP Unleashed Ниже должна следовать таблица с числами от 1 до 10: 1 2 [3 4 5 J6 7 8,9 10 Во фразе 'PHP Unleashed' содержится 12 символов. fc^: Местная интрасеть
Если тестовый сценарий вызовет ошибку либо не отработает правильно, то первое, что вы должны сделать — это дважды проверить файл Smarty. class .php, чтобы убедиться, что все конфигурационные переменные, имеющие отношение к этим каталогам, настроены правильно. Если не работает что-то другое, смотрите более подробную информацию в документации по Smarty. С другой стороны, если тестовый сценарий отработает правильно — значит, Smarty инсталлирован на вашем сервере, и вы готовы посмотреть, как он работает.