mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			528 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			528 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<?xml version="1.0" encoding="windows-1251"?>
 | 
						||
<!-- $Revision$ -->
 | 
						||
<!-- EN-Revision: 1.6 Maintainer: freespace Status: ready -->
 | 
						||
<part id="getting.started">
 | 
						||
 <title>Приступая к работе</title>
 | 
						||
 | 
						||
 <chapter id="what.is.smarty">
 | 
						||
   <title>Что такое Smarty?</title>
 | 
						||
   <para>
 | 
						||
    Smarty - это компилирующий обработчик шаблонов для PHP и на PHP.
 | 
						||
    Говоря более четко, он предоставляет один из инструментов, которые
 | 
						||
    позволяет добиться отделения прикладной логики и данных от
 | 
						||
    представления. Это очень удобно в ситуациях, когда программист и
 | 
						||
    верстальщик шаблона - различные люди. Например, скажем, вы создаете
 | 
						||
    страницу, которая показывает газетную статью. Название статьи, автор
 | 
						||
    и сама статья - элементы, которые не содержат никакой информации о том, как они
 | 
						||
    будут представлены. Их передают в Smarty из приложения, а верстальщик
 | 
						||
    шаблона редактирует шаблоны и использует комбинацию тэгов HTML и
 | 
						||
    тэгов шаблона, чтобы отформатировать представление этих элементов
 | 
						||
    (таблицы HTML, фоновые цвета, размеры шрифта, стиля и т.д.). Однажды
 | 
						||
    программист захочет изменить способ хранения статьи (сделать изменения
 | 
						||
    в логике приложения). Это изменение не вызовет изменений в шаблонах.
 | 
						||
    Содержание будет все еще передаваться в шаблон таким же самым способом.
 | 
						||
    Аналогично, если верстальщик захочет полностью перепроектировать
 | 
						||
    шаблоны, это не потребует никаких изменений в прикладной логике.
 | 
						||
   </para>
 | 
						||
   <para>
 | 
						||
    Одно из предназначений Smarty - это отделение логики приложения от
 | 
						||
    представления. Конечно же, шаблоны могут содержать в себе логику, но
 | 
						||
    лишь при условии, что эта логика необходима для правильного представления
 | 
						||
    данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска
 | 
						||
    строчек в таблице, приведение букв к верхнему регистру, циклический проход
 | 
						||
    по массиву для его отображения и т.д. - всё это является примером логики
 | 
						||
    представления. Не следует думать, что Smarty заставляет вас разделять логику
 | 
						||
    приложения и представление. Smarty не видит разницы между этими вещами,
 | 
						||
    так что помещать или не помещать логику приложения в шаблоны - решать вам.
 | 
						||
    Если же вы считаете, что в шаблоне ВООБЩЕ не должно быть логики, вы можете
 | 
						||
    ограничиться использованием чистого текста и переменных.
 | 
						||
   </para>
 | 
						||
   <para>
 | 
						||
    Одна из уникальных возможностей Smarty - компилирование шаблонов. Это
 | 
						||
    означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе.
 | 
						||
    Код создаётся один раз и потом только выполняется. Поэтому нет
 | 
						||
    необходимости обрабатывать файл шаблона для каждого запроса и каждый
 | 
						||
    шаблон может пользоваться всеми преимуществами таких кэшируюших решений,
 | 
						||
    как Zend Accelerator
 | 
						||
   (<ulink url="&url.zend;">&url.zend;</ulink>) или PHP Accelerator
 | 
						||
   (<ulink url="&url.php-accelerator;">&url.php-accelerator;</ulink>).
 | 
						||
   </para>
 | 
						||
   <para>
 | 
						||
    Некоторые особенности Smarty:
 | 
						||
   </para>
 | 
						||
   <itemizedlist>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Он очень быстр.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Он эффективен, так как обработчик PHP делает за него грязную работу.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Никакой лишней обработки шаблонов, они компилируются только один раз.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Перекомпилируются только те шаблоны, которые изменились.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Вы можете создавать пользовательские
 | 
						||
      <link linkend="language.custom.functions">функции</link> и
 | 
						||
      <link linkend="language.modifiers">модификаторы</link>, что делает язык
 | 
						||
      шаблонов чрезвычайно расширяемым.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Настраиваемые разделители тэгов шаблона, то есть вы можете
 | 
						||
      использовать {}, {{}}, <!--{}-->, и т.д.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Конструкции if/elseif/else/endif конструкции передаются обработчику PHP,
 | 
						||
      так что синтаксис выражения {if ...} может быть настолько простым или
 | 
						||
      сложным, насколько вам угодно.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Допустимо неограниченное вложение секций, условий и т.д.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Существует возможность включения PHP-кода прямо в ваш шаблон, однако
 | 
						||
      обычно в этом нет необходимости (и это не рекоммендуется), так как
 | 
						||
      движок весьма гибок и расширяем.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Встроенный механизм кэширования.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Произвольные источники шаблонов.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Пользовательские функции кэширования.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
    <listitem>
 | 
						||
     <para>
 | 
						||
      Компонентная архитектура.
 | 
						||
     </para>
 | 
						||
    </listitem>
 | 
						||
   </itemizedlist>
 | 
						||
 </chapter>
 | 
						||
 | 
						||
 <chapter id="installation">
 | 
						||
  <title>Установка</title>
 | 
						||
 | 
						||
  <sect1 id="installation.requirements">
 | 
						||
   <title>Требования</title>
 | 
						||
   <para>
 | 
						||
    Для установки и работы Smarty необходим веб-сервер с установленным PHP
 | 
						||
    версии 4.0.6 или выше.
 | 
						||
   </para>
 | 
						||
  </sect1>
 | 
						||
  <sect1 id="installing.smarty.basic">
 | 
						||
    <title>Базовая установка</title>
 | 
						||
    <para>
 | 
						||
     Скопируйте файлы Smarty, которые находятся в директории /libs/
 | 
						||
     дистрибутива. Редактировать эти файлы НЕ СЛЕДУЕТ. Они должны
 | 
						||
     использоваться всеми приложениями и изменяться только при обновлении
 | 
						||
     Smarty до новой версии.
 | 
						||
    </para>
 | 
						||
    <example>
 | 
						||
     <title>Файлы библиотеки Smarty</title>
 | 
						||
     <screen>
 | 
						||
<![CDATA[
 | 
						||
Smarty.class.php
 | 
						||
Smarty_Compiler.class.php
 | 
						||
Config_File.class.php
 | 
						||
debug.tpl
 | 
						||
/plugins/*.php (все файлы)
 | 
						||
/internals/*.php (все файлы)
 | 
						||
]]>
 | 
						||
     </screen>
 | 
						||
    </example>
 | 
						||
    <para>
 | 
						||
     Smarty использует константу PHP <link
 | 
						||
     linkend="constant.smarty.dir">SMARTY_DIR</link>, которая указывает путь к
 | 
						||
     директории библиотеки Smarty. Обычно, если приложение может найти файл
 | 
						||
     <emphasis>Smarty.class.php</emphasis>, то нет необходимости устанавливать
 | 
						||
     SMARTY_DIR. Однако, если	<emphasis>Smarty.class.php</emphasis> не может
 | 
						||
     быть найден в вашем include_path или вы не указывали абсолютный путь к
 | 
						||
     нему в приложении, то вы должны определить SMARTY_DIR вручную.
 | 
						||
     SMARTY_DIR <emphasis>должен</emphasis> включать завершающий слэш.
 | 
						||
    </para>
 | 
						||
    <para>
 | 
						||
     Вот как следует создавать экземпляр объекта Smarty в ваших PHP-скриптах:
 | 
						||
    </para>
 | 
						||
	   <example>
 | 
						||
     <title>Создание обекта Smarty</title>
 | 
						||
     <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
require('Smarty.class.php');
 | 
						||
$smarty = new Smarty;
 | 
						||
?>
 | 
						||
]]>
 | 
						||
     </programlisting>
 | 
						||
    </example>
 | 
						||
 | 
						||
    <para>
 | 
						||
     Попробуйте выполнить вышеуказанный код. Если Вы получаете ошибку о том,
 | 
						||
     что <emphasis>Smarty.class.php</emphasis> не найден, попробуйте следующие
 | 
						||
     варианты действий:
 | 
						||
    </para>
 | 
						||
 | 
						||
    <example>
 | 
						||
     <title>Укажите абсолютный путь к директории Smarty</title>
 | 
						||
     <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
require('/usr/local/lib/php/Smarty/Smarty.class.php');
 | 
						||
$smarty = new Smarty;
 | 
						||
?>
 | 
						||
]]>
 | 
						||
     </programlisting>
 | 
						||
    </example>
 | 
						||
 | 
						||
   	<example>
 | 
						||
     <title>Добавьте директорию Smarty к include_path</title>
 | 
						||
     <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
// Отредактируйте ваш файл php.ini, добавьте путь к Smarty
 | 
						||
// в include_path и перезапустите веб сервер.
 | 
						||
// Следующий код должен работать без ошибок:
 | 
						||
require('Smarty.class.php');
 | 
						||
$smarty = new Smarty;
 | 
						||
?>
 | 
						||
]]>
 | 
						||
     </programlisting>
 | 
						||
    </example>
 | 
						||
 | 
						||
	   <example>
 | 
						||
     <title>Установите значение константы SMARTY_DIR вручную</title>
 | 
						||
     <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
 | 
						||
require(SMARTY_DIR.'Smarty.class.php');
 | 
						||
$smarty = new Smarty;
 | 
						||
?>
 | 
						||
]]>
 | 
						||
     </programlisting>
 | 
						||
    </example>
 | 
						||
 | 
						||
   <para>
 | 
						||
     Теперь, когда все файлы находятся на своих местах, пришло время
 | 
						||
     установки директорий Smarty в вашем приложении. Smarty требует
 | 
						||
     четыре директории, которые (по умолчанию) называются
 | 
						||
     <emphasis>templates</emphasis>, <emphasis>templates_c</emphasis>,
 | 
						||
     <emphasis>configs</emphasis> и <emphasis>cache</emphasis>. Каждая из
 | 
						||
     них определяется свойствами класса Smarty:
 | 
						||
     <emphasis>$template_dir</emphasis>, <emphasis>$compile_dir</emphasis>,
 | 
						||
     <emphasis>$config_dir</emphasis> и <emphasis>$cache_dir</emphasis>
 | 
						||
     соответственно. Настойчиво рекомендуется использовать разные наборы
 | 
						||
     этих директорий для каждого приложения, использующего Smarty.
 | 
						||
    </para>
 | 
						||
    <para>
 | 
						||
     Убедитесь, что вы знаете расположение корневой директории для документов
 | 
						||
     вашего веб-сервера. В нашем примере это "/web/www.mydomain.com/docs/".
 | 
						||
     Так как доступ к директориям Smarty получает только библиотека Smarty
 | 
						||
     и они никогда не запрашиваются напрямую веб-браузером, вам рекомендуется
 | 
						||
     вынести директории Smarty <emphasis>за пределы</emphasis> корневой
 | 
						||
     директории для документов, чтобы избежать лишнего беспокойства
 | 
						||
     относительно безопасности.
 | 
						||
    </para>
 | 
						||
    <para>
 | 
						||
     В нашем примере мы будем устанавливать Smarty для некоторой гостевой
 | 
						||
     книги. Приложение было выбрано только для того, чтобы использовать его
 | 
						||
     имя в именах директорий. Вы можете использовать те же настройки с любым
 | 
						||
     другим приложением, просто меняя "guestbook" на имя вашего приложения.
 | 
						||
     Мы же разместим наши директории Smarty тут:
 | 
						||
     "/web/www.mydomain.com/smarty/guestbook/".
 | 
						||
    </para>
 | 
						||
   <para>
 | 
						||
    Вам понадобится как минимум один файл в корневой директории для документов
 | 
						||
    - это скрипт, к которому обращается веб-браузер. Мы назовём наш скрипт
 | 
						||
    "index.php" и поместим его в поддиректорию "/guestbook/" корневой директории
 | 
						||
    для документов.
 | 
						||
   </para>
 | 
						||
 | 
						||
   <note>
 | 
						||
    <title>Техническое замечание</title>
 | 
						||
    <para>
 | 
						||
     Бывает удобно настроить веб-сервер так, чтобы "index.php" расценивался
 | 
						||
     как индексный файл дирекотрии по умолчанию, чтобы при запросе страницы
 | 
						||
     "http://www.mydomain.com/guestbook/", вызывался скрипт index.php без
 | 
						||
     "index.php" в конце адресной строки. В веб-сервере Apache вы можете
 | 
						||
     настроить это, добавив "index.php" в конец директивы DirectoryIndex
 | 
						||
     (записи разделяются пробелами).
 | 
						||
    </para>
 | 
						||
   </note>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Давайте взгляним на текущую файловую структуру:
 | 
						||
   </para>
 | 
						||
 | 
						||
   <example>
 | 
						||
    <title>Файловая структура примера</title>
 | 
						||
    <screen>
 | 
						||
<![CDATA[
 | 
						||
/usr/local/lib/php/Smarty/Smarty.class.php
 | 
						||
/usr/local/lib/php/Smarty/Smarty_Compiler.class.php
 | 
						||
/usr/local/lib/php/Smarty/Config_File.class.php
 | 
						||
/usr/local/lib/php/Smarty/debug.tpl
 | 
						||
/usr/local/lib/php/Smarty/internals/*.php
 | 
						||
/usr/local/lib/php/Smarty/plugins/*.php
 | 
						||
 | 
						||
/web/www.mydomain.com/smarty/guestbook/templates/
 | 
						||
/web/www.mydomain.com/smarty/guestbook/templates_c/
 | 
						||
/web/www.mydomain.com/smarty/guestbook/configs/
 | 
						||
/web/www.mydomain.com/smarty/guestbook/cache/
 | 
						||
 | 
						||
/web/www.mydomain.com/docs/guestbook/index.php
 | 
						||
]]>
 | 
						||
    </screen>
 | 
						||
   </example>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Smarty понадобятся права на запись в <emphasis>$compile_dir</emphasis> и
 | 
						||
    <emphasis>$cache_dir</emphasis>, так что убедитесь, что у веб-сервера
 | 
						||
    есть эти права. Обычно сервер запущен от имени пользователя "nobody" группы
 | 
						||
    "nobody". Для пользователей OS X пользователем по умолчанию является "www"
 | 
						||
    группы "www". Если вы используете Apache, вы можете заглянуть в ваш файл
 | 
						||
    httpd.conf (который обычно расположен в "/usr/local/apache/conf/") чтобы
 | 
						||
    узнать, какой пользователь и группа используются.
 | 
						||
   </para>
 | 
						||
 | 
						||
   <example>
 | 
						||
    <title>Установка прав доступа к файлам</title>
 | 
						||
    <programlisting role="shell">
 | 
						||
<![CDATA[
 | 
						||
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
 | 
						||
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
 | 
						||
 | 
						||
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
 | 
						||
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/
 | 
						||
]]>
 | 
						||
    </programlisting>
 | 
						||
   </example>
 | 
						||
 | 
						||
   <note>
 | 
						||
    <title>Техническое замечание</title>
 | 
						||
    <para>
 | 
						||
     chmod 770 даёт достаточно жесткую защиту - разрешает только пользователю
 | 
						||
     "nobody" и группе "nobody" доступ на чтение и запись в эти директории.
 | 
						||
     Если вы хотите открыть доступ на чтение для всех (обычно для собственного
 | 
						||
     удобства при просмотре этих файлов), вы можете использовать значение 775.
 | 
						||
    </para>
 | 
						||
   </note>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Нам необходимо создать файл index.tpl, которы будет загружаться Smarty.
 | 
						||
    Он будет расположен в вашей $template_dir.
 | 
						||
   </para>
 | 
						||
 | 
						||
   <example>
 | 
						||
    <title>Редактирование /web/www.mydomain.com/smarty/guestbook/templates/index.tpl</title>
 | 
						||
    <screen>
 | 
						||
<![CDATA[
 | 
						||
 | 
						||
{* Smarty *}
 | 
						||
 | 
						||
Hello, {$name}!
 | 
						||
]]>
 | 
						||
    </screen>
 | 
						||
   </example>
 | 
						||
 | 
						||
   <note>
 | 
						||
    <title>Техническое замечание</title>
 | 
						||
    <para>
 | 
						||
     {* Smarty *} - это комментарий шаблона. Он не является обязательным, но
 | 
						||
     его размещение в начале каждого шаблона является хорошим тоном.
 | 
						||
     Это позволяет проще различать файлы независимо от их расширения.
 | 
						||
     К примеру, текстовые редакторы могут узнавать файл и включать особенную
 | 
						||
     подсветку синтаксиса.
 | 
						||
    </para>
 | 
						||
   </note>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Теперь давайте отредактируем index.php. Мы создадим экземпляр Smarty,
 | 
						||
    присвоим значение переменной шаблона и отобразим файл index.tpl.
 | 
						||
    В условиях нашего примера, мы поместили "/usr/local/lib/php/Smarty" в
 | 
						||
    include_path. Убедитесь, что вы сделали то же самое или используете
 | 
						||
    абсолютные пути.
 | 
						||
   </para>
 | 
						||
 | 
						||
   <example>
 | 
						||
    <title>Редактироение /web/www.mydomain.com/docs/guestbook/index.php</title>
 | 
						||
    <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
 | 
						||
// загружаем библиотеку Smarty
 | 
						||
require('Smarty.class.php');
 | 
						||
 | 
						||
$smarty = new Smarty;
 | 
						||
 | 
						||
$smarty->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
 | 
						||
$smarty->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
 | 
						||
$smarty->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
 | 
						||
$smarty->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';
 | 
						||
 | 
						||
$smarty->assign('name','Ned');
 | 
						||
 | 
						||
$smarty->display('index.tpl');
 | 
						||
?>
 | 
						||
]]>
 | 
						||
    </programlisting>
 | 
						||
   </example>
 | 
						||
 | 
						||
   <note>
 | 
						||
    <title>Техническое замечание</title>
 | 
						||
    <para>
 | 
						||
     В нашем примере мы устанавливаем абсолютные пути ко всем директориям
 | 
						||
     Smarty. Если '/web/www.mydomain.com/smarty/guestbook/' находится в
 | 
						||
     include_path вашего PHP, то эти настройки не обязательны. Тем не менее,
 | 
						||
     более эффективным и (из опыта) менее глюкоопасным является использование
 | 
						||
     абсолютных путей. Это придаст уверенность в том, что Smarty получает файлы
 | 
						||
     из тех директорий, из которых вы хотите.
 | 
						||
    </para>
 | 
						||
   </note>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Теперь загрузите файл index.php из вашего веб-браузера.
 | 
						||
    Вы должны увидеть надпись "Hello, Ned!"
 | 
						||
   </para>
 | 
						||
   <para>
 | 
						||
    Вы закончили базовую установку Smarty!
 | 
						||
   </para>
 | 
						||
  </sect1>
 | 
						||
  <sect1 id="installing.smarty.extended">
 | 
						||
   <title>Расширенная установка</title>
 | 
						||
 | 
						||
   <para>
 | 
						||
    Эта глава является продолжением <link
 | 
						||
    linkend="installing.smarty.basic">базовой установки</link>; пожалуйста,
 | 
						||
    сперва прочитайте её.
 | 
						||
   </para>
 | 
						||
   <para>
 | 
						||
    Немного более гибким способом установки Smarty является наследование класса
 | 
						||
    и инициализация вашего собственного окружения Smarty. Таким образом, вместо
 | 
						||
    того, чтобы постоянно устанавливать пути директорий, присваивать одни и те
 | 
						||
    же переменные и т.д., мы можем всё это сделать в одном месте.
 | 
						||
    Давайте создадим новую директорию "/php/includes/guestbook/",а в ней -
 | 
						||
    новый файл, который назовем "setup.php". По условиям нашего примера,
 | 
						||
    "/php/includes" находится в include_path. Убедитесь, чтобы то же самое было
 | 
						||
    и у вас, или используетй абсолютные пути.
 | 
						||
   </para>
 | 
						||
 | 
						||
   <example>
 | 
						||
    <title>Редактирование /php/includes/guestbook/setup.php</title>
 | 
						||
    <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
 | 
						||
// загружаем библиотеку Smarty
 | 
						||
require('Smarty.class.php');
 | 
						||
 | 
						||
// Файл setup.php - это хорошее место для
 | 
						||
// подключения библиотечных файлов вашего приложения,
 | 
						||
// вы можете сделать это прямо здесь. Пример:
 | 
						||
// require('guestbook/guestbook.lib.php');
 | 
						||
 | 
						||
class Smarty_GuestBook extends Smarty {
 | 
						||
 | 
						||
   function Smarty_GuestBook()
 | 
						||
   {
 | 
						||
 | 
						||
        // Конструктор класса. Он автоматически вызывается при создании нового экземпляра.
 | 
						||
 | 
						||
        $this->Smarty();
 | 
						||
 | 
						||
        $this->template_dir = '/web/www.mydomain.com/smarty/guestbook/templates/';
 | 
						||
        $this->compile_dir = '/web/www.mydomain.com/smarty/guestbook/templates_c/';
 | 
						||
        $this->config_dir = '/web/www.mydomain.com/smarty/guestbook/configs/';
 | 
						||
        $this->cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/';
 | 
						||
 | 
						||
        $this->caching = true;
 | 
						||
        $this->assign('app_name','Guest Book');
 | 
						||
   }
 | 
						||
 | 
						||
}
 | 
						||
?>
 | 
						||
]]>
 | 
						||
    </programlisting>
 | 
						||
   </example>
 | 
						||
 | 
						||
  <para>
 | 
						||
   Теперь давайте изменим index.php, чтобы он использовал setup.php:
 | 
						||
  </para>
 | 
						||
 | 
						||
  <example>
 | 
						||
   <title>Редактирование /web/www.mydomain.com/docs/guestbook/index.php</title>
 | 
						||
   <programlisting role="php">
 | 
						||
<![CDATA[
 | 
						||
<?php
 | 
						||
 | 
						||
require('guestbook/setup.php');
 | 
						||
 | 
						||
$smarty = new Smarty_GuestBook;
 | 
						||
 | 
						||
$smarty->assign('name','Ned');
 | 
						||
 | 
						||
$smarty->display('index.tpl');
 | 
						||
?>
 | 
						||
]]>
 | 
						||
   </programlisting>
 | 
						||
  </example>
 | 
						||
 | 
						||
  <para>
 | 
						||
   Теперь вы видите, что создать экземпляр Smarty довольно просто - нужно лишь
 | 
						||
   использовать Smarty_GuestBook, который автоматически инициализирует все настройки
 | 
						||
   для нашего приложения.
 | 
						||
  </para>
 | 
						||
 | 
						||
  </sect1>
 | 
						||
 | 
						||
 </chapter>
 | 
						||
</part>
 | 
						||
 | 
						||
<!-- Keep this comment at the end of the file
 | 
						||
Local variables:
 | 
						||
mode: sgml
 | 
						||
sgml-omittag:t
 | 
						||
sgml-shorttag:t
 | 
						||
sgml-minimize-attributes:nil
 | 
						||
sgml-always-quote-attributes:t
 | 
						||
sgml-indent-step:1
 | 
						||
sgml-indent-data:t
 | 
						||
indent-tabs-mode:nil
 | 
						||
sgml-parent-document:nil
 | 
						||
sgml-default-dtd-file:"../../../../manual.ced"
 | 
						||
sgml-exposed-tags:nil
 | 
						||
sgml-local-catalogs:nil
 | 
						||
sgml-local-ecat-files:nil
 | 
						||
End:
 | 
						||
vim600: syn=xml fen fdm=syntax fdl=2 si
 | 
						||
vim: et tw=78 syn=sgml
 | 
						||
vi: ts=1 sw=1
 | 
						||
-->
 |