Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Базовая установка

Скопируйте файлы Smarty, которые находятся в субдиректории /libs/ дистрибутива. Редактировать эти PHP-файлы НЕ СЛЕДУЕТ. Они должны использоваться всеми приложениями и изменяться только при обновлении Smarty до новой версии.

В следующих примерах архив с исходным кодом Smarty был распакован в

  • /usr/local/lib/Smarty-v.e.r/ для машин под *nix

  • и c:\webroot\libs\Smarty-v.e.r\ для машин под Windows.

Example 2.1. Необходимые файлы библиотеки Smarty


Smarty-v.e.r/
    libs/
        Smarty.class.php
        Smarty_Compiler.class.php
        Config_File.class.php
        debug.tpl
        internals/*.php (все файлы)
        plugins/*.php (все файлы)

     

Smarty использует константу PHP SMARTY_DIR, которая указывает полный путь к директории libs/ из Smarty. Обычно, если ваше приложение может найти файл Smarty.class.php, то нет необходимости устанавливать SMARTY_DIR - Smarty сам во всём разберётся. Однако, если Smarty.class.php не может быть найден в вашем include_path или вы не указывали абсолютный путь к нему в приложении, то вы должны определить SMARTY_DIR вручную. SMARTY_DIR должна включать завершающий слэш.

Вот как следует создавать экземпляр объекта Smarty в ваших PHP-скриптах:


<?php
// Обратите внимание: в слове Smarty буква 'S' должна быть заглавной
require_once('Smarty.class.php');
$smarty = new Smarty();
?>

     

Попробуйте выполнить вышеуказанный код. Если Вы получаете ошибку о том, что Smarty.class.php не найден, попробуйте следующие варианты действий:

Example 2.2. Ручная установка константы SMARTY_DIR


<?php
// стиль *nix (не забывайте о заглавной 'S')
define('SMARTY_DIR', '/usr/local/lib/Smarty-v.e.r/libs/');

// стиль windows
define('SMARTY_DIR', 'c:/webroot/libs/Smarty-v.e.r/libs/');

// пример хака для работы одновременно с *nix и windows
// предполагается, что Smarty находится в директории 'includes/' относительно текущего скрипта
define('SMARTY_DIR', str_replace("\\", "/", getcwd()).'/includes/Smarty-v.e.r/libs/');

require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
?>

     

Example 2.3. Передача абсолютного пути к файлам библиотеки


<?php
// стиль *nix (не забывайте о заглавной 'S')
require_once('/usr/local/lib/Smarty-v.e.r/libs/Smarty.class.php');

// стиль windows
require_once('c:/webroot/libs/Smarty-v.e.r/libs/Smarty.class.php');

$smarty = new Smarty();
?>

     

Example 2.4. Добавление библиотеки в путь в файле php.ini


;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; *nix: "/path1:/path2"
include_path = ".:/usr/share/php:/usr/local/lib/Smarty-v.e.r/libs/"

; Windows: "\path1;\path2"
include_path = ".;c:\php\includes;c:\webroot\libs\Smarty-v.e.r\libs\"

     

Example 2.5.  Дописывание include_path из PHP-скрипта используя ini_set()


<?php
// *nix
ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'/usr/local/lib/Smarty-v.e.r/libs/');

// windows
ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'c:/webroot/lib/Smarty-v.e.r/libs/');
?>

    

Теперь, когда все файлы находятся на своих местах, пришло время установки директорий Smarty в вашем приложении.

  • Smarty нужно четыре директории, которые по умолчанию называются templates/, templates_c/, configs/ и cache/

  • Каждая из них определяется свойствами класса Smarty: $template_dir, $compile_dir, $config_dir и $cache_dir соответственно. Настойчиво рекомендуется использовать разные наборы этих директорий для каждого приложения, использующего Smarty.

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

Example 2.6. Вот как выглядит файловая структура


/usr/local/lib/Smarty-v.e.r/libs/
        Smarty.class.php
        Smarty_Compiler.class.php
        Config_File.class.php
        debug.tpl
        internals/*.php
        plugins/*.php

/web/www.example.com/
        guestbook/
                templates/
                    index.tpl
                templates_c/
                configs/
                cache/
                htdocs/
                    index.php

    

Убедитесь, что вы знаете расположение корневой директории документов вашего веб-сервера. В следующих примерах, корневой директорией документов является /web/www.example.com/guestbook/htdocs/. Доступ к директориям Smarty происходит только из библиотеки Smarty и никогда не происходит через веб-браузер. Поэтому, в целях безопасности рекоммендуется располагать эти директории за пределами корневой директории документов сервера, хотя это и не обязательно.

Вам понадобиться как минимум один файл внутри корневой директории документов - это скрипт, вызываемый веб-браузером. Мы назовем наш скрипт index.php и положим его в поддиректорию внутри корневой директории документов /htdocs/.

Smarty понадобятся права на запись (пользователей Windows это не касается) в директории $compile_dir и $cache_dir (templates_c/ и cache/), так что убедитесь, что у веб-сервера есть эти права.

Note

Обычно это пользователь nobody и группа nobody. Для пользователей OS X, пользователь по умолчанию - это www и группа - www. Если вы используете Apache, вы можете узнать используемые имя пользователя и группу из файла httpd.conf.

Example 2.7. Установка прав доступа к файлам и директориям


chown nobody:nobody /web/www.example.com/smarty/guestbook/templates_c/
chmod 770 /web/www.example.com/smarty/guestbook/templates_c/

chown nobody:nobody /web/www.example.com/smarty/guestbook/cache/
chmod 770 /web/www.example.com/smarty/guestbook/cache/

    

Примечание

chmod 770 даёт достаточно жесткую защиту - разрешает только пользователю nobody и группе nobody доступ на чтение и запись в эти директории. Если вы хотите открыть доступ на чтение для всех (обычно для собственного удобства при просмотре этих файлов), вы можете использовать значение 775.

Нам необходимо создать файл index.tpl, которы будет загружаться Smarty. Он будет расположен в $template_dir.

Example 2.8. /web/www.example.com/guestbook/templates/index.tpl


{* Smarty *}

Привет, {$name}! Добро пожаловать в Smarty!

    

Техническое замечание

{* Smarty *} - это комментарий шаблона. Он не является обязательным, но его размещение в начале каждого шаблона является хорошим тоном. Это позволяет проще различать файлы независимо от их расширения. К примеру, текстовые редакторы могут узнавать этот файл и включать особенную подсветку синтаксиса.

Теперь давайте отредактируем index.php. Мы создадим экземпляр Smarty, присвоим значение переменной шаблона и отобразим файл index.tpl.

Example 2.9. /web/www.example.com/docs/guestbook/index.php


<?php

require_once(SMARTY_DIR . 'Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = '/web/www.example.com/guestbook/templates/';
$smarty->compile_dir = '/web/www.example.com/guestbook/templates_c/';
$smarty->config_dir = '/web/www.example.com/guestbook/configs/';
$smarty->cache_dir = '/web/www.example.com/guestbook/cache/';

$smarty->assign('name', 'Катруська');

//** раскомментируйте следующую строку для отображения отладочной консоли
//$smarty->debugging = true;

$smarty->display('index.tpl');
?>

    

Примечание

В нашем примере мы устанавливаем абсолютные пути ко всем директориям Smarty. Если /web/www.example.com/guestbook/ находится в include_path вашего PHP, то эти настройки не обязательны. Тем не менее, более эффективным и (из опыта) менее глюкоопасным является использование абсолютных путей. Это придаст уверенность в том, что Smarty получает файлы из тех директорий, из которых вы хотите.

Теперь перейдите к файлу index.php при помощи вашего веб-браузера. Вы должны увидеть надпись "Привет, Катруська! Добро пожаловать в Smarty!"

Вы закончили базовую установку Smarty!

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors