diff --git a/docs/ru/getting-started.xml b/docs/ru/getting-started.xml index e992c6a6..3dae065d 100644 --- a/docs/ru/getting-started.xml +++ b/docs/ru/getting-started.xml @@ -1,43 +1,48 @@ - + Приступая к работе Что такое Smarty? - Smarty - это компилирующий обработчик шаблонов для PHP и на PHP. + Smarty - это компилирующий обработчик шаблонов для PHP и на PHP. Говоря более четко, он предоставляет один из инструментов, которые - позволяет добиться разделения прикладной логики и от + позволяет добиться отделения прикладной логики и данных от представления. Это очень удобно в ситуациях, когда программист и - верстальщик шаблона - различные люди. Например, скажем, вы создаете - страницу, которая показывает газетную статью. Название статьи, автор + верстальщик шаблона - различные люди. Например, скажем, вы создаете + страницу, которая показывает газетную статью. Название статьи, автор и сама статья - элементы, которые не содержат никакой информации о том, как они будут представлены. Их передают в Smarty из приложения, а верстальщик - шаблона редактирует шаблоны и использует комбинацию тэгов HTML и + шаблона редактирует шаблоны и использует комбинацию тэгов HTML и тэгов шаблона, чтобы отформатировать представление этих элементов (таблицы HTML, фоновые цвета, размеры шрифта, стиля и т.д.). Однажды программист захочет изменить способ хранения статьи (сделать изменения - в логике приложения.) Это изменение не вызовет изменений в шаблонах. + в логике приложения). Это изменение не вызовет изменений в шаблонах. Содержание будет все еще передаваться в шаблон таким же самым способом. Аналогично, если верстальщик захочет полностью перепроектировать - шаблоны, это не потребует никаких изменений к прикладной логике. - - - Теперь коротко о том, чего не может Smarty. Он не пытается полностью - разделить логику от шаблонов. Нет никакой проблемы с логикой в ваших - шаблонах при условии, что это строго логика представления. Совет: - держите прикладную логику вне шаблонов, а логику представления вне - приложения. Так проще всего сохранить проект управляемым и расширяемым - в течение длительного времени. + шаблоны, это не потребует никаких изменений в прикладной логике. - Одна из уникальных возможностей Smarty - компилирование шаблонов. Это + Одно из предназначений Smarty - это отделение логики приложения от + представления. Конечно же, шаблоны могут содержать в себе логику, но + лишь при условии, что эта логика необходима для правильного представления + данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска + строчек в таблице, приведение букв к верхнему регистру, циклический проход + по массиву для его отображения и т.д. - всё это является примером логики + представления. Не следует думать, что Smarty заставляет вас разделять логику + приложения и представление. Smarty не видит разницы между этими вещами, + так что помещать или не помещать логику приложения в шаблоны - решать вам. + Если же вы считаете, что в шаблоне ВООБЩЕ не должно быть логики, вы можете + ограничиться использованием чистого текста и переменных. + + + Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости обрабатывать файл шаблона для каждого запроса и каждый - шаблон может пользоваться всеми преимуществами таких кэшируюших решений, + шаблон может пользоваться всеми преимуществами таких кэшируюших решений, как Zend Accelerator (&url.zend;) или PHP Accelerator (&url.php-accelerator;). @@ -48,43 +53,43 @@ - Он очень быстр + Он очень быстр. - Он эффективен, так как PHP обработчик делает за него грязную работу + Он эффективен, так как PHP обработчик делает за него грязную работу. - Никакой лишней обработки шаблонов, они компилируются только один раз + Никакой лишней обработки шаблонов, они компилируются только один раз. - Перекомпилируются только те шаблоны, которые именились + Перекомпилируются только те шаблоны, которые изменились. - Вы можете создавать пользовательские - функции и - модификаторы, что делает язык - шаблонов чрезвычайно расширяемым + Вы можете создавать пользовательские + функции и + модификаторы, что делает язык + шаблонов чрезвычайно расширяемым. Настраиваемые разделители тэгов шаблона, то есть вы можете - использовать {}, {{}}, <!--{}-->, и т.д.. + использовать {}, {{}}, <!--{}-->, и т.д. - If/elseif/else/endif конструкции передаются PHP обработчику, + Конструкции if/elseif/else/endif конструкции передаются обработчику PHP, так что синтаксис {if ...} выражения может быть настолько простым или - комплексным, как вам нравится + сложным, насколько вам угодно. @@ -94,33 +99,34 @@ - Существует возможность включения PHP-кода прямо в ваш шаблон, однако это - не рекомендуется + Существует возможность включения PHP-кода прямо в ваш шаблон, однако + обычно в этом нет необходимости (и это не рекоммендуется), так как + движок весьма гибок в настройке. - Встроеное кэширование + Встроенное кэширование. - Произвольные источники шаблона + Произвольные источники шаблона. - Произвольные функции обработки кэширования + Пользовательские функции кэширования. - Поддержка плагинов + Компонентная архитектура. - + Установка @@ -131,33 +137,33 @@ - Базовая инсталяция + Базовая установка - Скопируйте файлы Smarty, которые находятся в директории /libs/ дистрибутива. - НЕ МЕНЯЙТЕ эти файлы. Используйте возможности внешней настройки вместо - этого. + Скопируйте файлы Smarty, которые находятся в директории /libs/ дистрибутива. + Менять эти файлы НЕ СЛЕДУЕТ. Они должны использоваться всеми приложениями и изменяться + только при обновлении Smarty до новой версии. - Файлы Smarty + Файлы библиотеки Smarty - + Smarty использует PHP константу SMARTY_DIR, которая указывает путь к - файлам Smarty. Обычно, если приложение может найти файл + директории библиотеки Smarty. Обычно, если приложение может найти файл Smarty.class.php, то нет необходимости устанавливать SMARTY_DIR. Однако, если Smarty.class.php не может - быть найден в вашем include_path или вы не указывали абсолютный путь к нему в - приложении, то вы должны определить SMARTY_DIR вручную. + быть найден в вашем include_path или вы не указывали абсолютный путь к нему в + приложении, то вы должны определить SMARTY_DIR вручную. SMARTY_DIR должен включать завершающий слэш. @@ -165,13 +171,16 @@ debug.tpl Создание обекта Smarty - + ]]> - - + + + Попробуйте выполнить вышеуказанный код. Если Вы получаете ошибку о том, что Smarty.class.php не найден, попробуйте следующие @@ -180,90 +189,102 @@ $smarty = new Smarty; Укажите абсолютный путь к директории Smarty - + ]]> - + Добавьте директорию Smarty к include_path - + ]]> - - + + - - Установите значение константы SMARTY_DIR - + + Установите значение константы SMARTY_DIR вручную + ]]> - - + + - - Теперь, когда все файлы находятся на своих местах, пришло время - установки директорий Smarty в вашем приложении. Smarty требует - четыре директории, которые по умолчанию называются - templates, templates_c, - configs и cache. Каждая из + + Теперь, когда все файлы находятся на своих местах, пришло время + установки директорий Smarty в вашем приложении. Smarty требует + четыре директории, которые (по умолчанию) называются + templates, templates_c, + configs и cache. Каждая из них определяется свойствами класса Smarty: $template_dir, $compile_dir, $config_dir, и $cache_dir соответственно. Настойчиво рекомендуется использовать разные наборы этих директорий для каждого приложения, - использующего Smarty. + использующего Smarty. - Убедитесь, что вы знаете значение DOCUMENT_ROOT вашего веб-сервера. + Убедитесь, что вы знаете значение DOCUMENT_ROOT вашего веб-сервера. В нашем примере это "/web/www.mydomain.com/docs/". Так как к файлам Smarty будут обращаться только скрипты, то вам - рекомендуется вынести директории Smarty за пределы - DOCUMENT_ROOT, чтобы избежать лишнего беспокойства. + рекомендуется вынести директории Smarty за пределы + DOCUMENT_ROOT, чтобы избежать лишнего беспокойства относительно безопасности. В нашем примере мы будем устанавливать Smarty для некоторой гостевой книги. Приложение было выбрано только для того, чтобы использовать его имя в именах директорий. Вы можете использовать те же настройки с любым другим приложением, просто меняя "guestbook" на имя вашего приложения. - Мы же выбрали путь к директориям Smarty такой: + Мы же разместим наши директории Smarty тут: "/web/www.mydomain.com/smarty/guestbook/". - - + + Вам понадобится как минимум один файл в корне веб-директории - это скрипт, + к которому обращается веб-браузер. Мы назовём наш скрипт "index.php" + и поместим его в поддиректорию "/guestbook" корневой веб-директории. + + + + Техническое замечание - You will need as least one file under your document root, and that is the - script accessed by the web browser. We will call our script "index.php", - and place it in a subdirectory under the document root called - "/guestbook/". It is convenient to setup the web server so that "index.php" - can be identified as the default directory index, so if you access - "http://www.mydomain.com/guestbook/", the index.php script will be executed - without "index.php" in the URL. In Apache you can set this up by adding - "index.php" onto the end of your DirectoryIndex setting (separate each - entry with a space.) + Бывает удобно настроить веб-сервер так, чтобы "index.php" расценивался + как индексный файл дирекотрии по умолчанию, чтобы при запросе страницы + "http://www.mydomain.com/guestbook/", вызывался скрипт index.php без + "index.php" в конце URL'а. В веб-сервере Apache вы можете настроить это добавив + "index.php" в конец директивы DirectoryIndex (записи разделяются пробелами). - - Lets take a look at the file structure so far: - - - Example file structure - + + + + Давайте взгляним на текущую файловую структуру: + + + + Файловая структура примера + - - - - Smarty will need write access to the $compile_dir and - $cache_dir, so be sure the web server user can write - to them. This is usually user "nobody" and group "nobody". For OS X users, - the default is user "www" and group "www". If you are using Apache, you can - look in your httpd.conf file (usually in "/usr/local/apache/conf/") to see - what user and group are being used. - - - Setting file permissions - + + + + + Smarty понадобятся права на запись в $compile_dir и + $cache_dir, так что убедитесь, что у веб-сервера есть эти права. + Обычно он запущен под именем пользователя "nobody" группы "nobody". Для пользователей OS X + пользователем по умолчанию является "www" группы "www". Если вы используете Apache, вы можете + заглянуть в ваш файл httpd.conf (который обычно расположен в "/usr/local/apache/conf/") чтобы + узнать, какие используются имя пользователя и группа. + + + + Установка прав доступа к файлам + - - - - Technical Note - - chmod 770 will be fairly tight security, it only allows user "nobody" and - group "nobody" read/write access to the directories. If you would like to - open up read access to anyone (mostly for your own convenience of viewing - these files), you can use 775 instead. - - + + + + + Техническое замечание - We need to create the index.tpl file that Smarty will load. This will be - located in your $template_dir. + chmod 770 даёт достаточно жесткую защиту - только пользователь "nobody" и группа + "nobody" имеют доступ на запись и чтение к директориям. Если вы хотите открыть доступ на чтение + для всех (обычно для собственного удобства при просмотре этих файлов), + вы можете использовать маску 775. - - Editing /web/www.mydomain.com/smarty/guestbook/templates/index.tpl - + + + + Нам необходимо создать файл index.tpl, которы будет загружаться Smarty. + Он будет расположен в вашей $template_dir. + + + + Редактирование /web/www.mydomain.com/smarty/guestbook/templates/index.tpl + - - - - Technical Note - - {* Smarty *} is a template comment. It is not required, but it is good - practice to start all your template files with this comment. It makes - the file easy to recognize regardless of the file extension. For - example, text editors could recognize the file and turn on special - syntax highlighting. - - + + + + + Техническое замечание - Now lets edit index.php. We'll create an instance of Smarty, assign a - template variable and display the index.tpl file. In our example - environment, "/usr/local/lib/php/Smarty" is in our include_path. Be sure you - do the same, or use absolute paths. + {* Smarty *} - это комментарий шаблона. Он не является обязательным, но + его размещение в начале каждого шаблона является хорошим тоном. + Это позволяет проще различать файлы независимо от их расширения. + К примеру, текстовые редакторы могут узнавать файл и включать особенную + подсветку синтаксиса. - - Editing /web/www.mydomain.com/docs/guestbook/index.php - + + + + Теперь давайте отредактируем index.php. Мы создадим экземпляр Smarty, присвоим + значение переменной шаблона и отобразим файл index.tpl. В окружении нашего примера + мы поместили "/usr/local/lib/php/Smarty" в include_path. Убедитесь, что вы сделали + то же самое или используете абсолютные пути. + + + + Редактироение /web/www.mydomain.com/docs/guestbook/index.php + cache_dir = '/web/www.mydomain.com/smarty/guestbook/cache/'; $smarty->assign('name','Ned'); $smarty->display('index.tpl'); +?> ]]> - - - - Technical Note - - In our example, we are setting absolute paths to all of the Smarty - directories. If '/web/www.mydomain.com/smarty/guestbook/' is within your - PHP include_path, then these settings are not necessary. However, it is - more efficient and (from experience) less error-prone to set them to - absolute paths. This ensures that Smarty is getting files from the - directories you intended. - - - - Now load the index.php file from your web browser. You should see "Hello, - Ned!" - - - You have completed the basic setup for Smarty! - - - - Extended Setup + + + + Техническое замечание - This is a continuation of the basic installation, please read - that first! - - - A slightly more flexible way to setup Smarty is to extend the class and - initialize your Smarty environment. So instead of repeatedly setting - directory paths, assigning the same vars, etc., we can do that in one place. - Lets create a new directory "/php/includes/guestbook/" and make a new file - called "setup.php". In our example environment, "/php/includes" is in our - include_path. Be sure you set this up too, or use absolute file paths. + В нашем примере, мы устанавливаем абсолютные пути ко всем директориям + Smarty. Если '/web/www.mydomain.com/smarty/guestbook/' находится в + include_path вашего PHP, то эти настройки не обязательны. Тем не менее, + более эффективным и (из опыта) менее глюкоопасным является использование + абсолютных путей. Это даст вам уверенность в том, что Smarty получает файлы + из тех директорий, из которых вы хотите. + - - Editing /php/includes/guestbook/setup.php - + + Теперь загрузите файл index.php из вашего веб-браузера. + Вы должны увидеть надпись "Hello, Ned!" + + + Вы закончили базовую установку Smarty! + + + + Расширенная установка + + + Эта глава является продолжением базовой установки; пожалуйста, + сперва прочитайте её. + + + Немного более гибким способом установки Smarty является наследование класса и + инициализация вашего собственного окружения Smarty. Таким образом, вместо того, чтобы + постоянно устанавливать пути директорий, присваивать одни и те же переменные и т.д. + мы можем всё это сделать в одном месте. + Давайте создадим новую директорию "/php/includes/guestbook/", а в ней - новый файл, + который назовем "setup.php". В окружении из нашего примера "/php/includes" находится + в include_path. Проверьте, что бы то же самое было и у вас, или используетй абсолютные пути. + + + + Редактирование /php/includes/guestbook/setup.php + 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'); + $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'); } } +?> ]]> - + - - Now lets alter the index.php file to use setup.php: - - - Editing /web/www.mydomain.com/docs/guestbook/index.php - + + + Теперь давайте изменим index.php для использования setup.php: + + + + Редактирование /web/www.mydomain.com/docs/guestbook/index.php + assign('name','Ned'); $smarty->display('index.tpl'); +?> ]]> - - - - Now you see it is quite simple to bring up an instance of Smarty, just use - Smarty_GuestBook which automatically initializes everything for our application. - + + + + + Теперь вы видите, что создать экземпляр Smarty довольно просто - нужно лишь + использовать Smarty_GuestBook, который автоматически инициализирует все настройки + для нашего приложения. + + +