diff --git a/docs/ru/getting-started.xml b/docs/ru/getting-started.xml index 4e7df3b5..fc4d9e6d 100644 --- a/docs/ru/getting-started.xml +++ b/docs/ru/getting-started.xml @@ -1,6 +1,6 @@ - + Приступая к работе @@ -13,46 +13,109 @@ представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона - различные люди. + Например, скажем, вы создаете страницу, которая показывает газетную - статью. Название статьи, автор и сама статья - элементы, которые не - содержат никакой информации о том, как они будут представлены. Их - передают в Smarty из приложения, а верстальщик шаблона редактирует - шаблоны и использует комбинацию тэгов HTML и тэгов шаблона, чтобы - отформатировать представление этих элементов (таблицы HTML, фоновые - цвета, размеры шрифта, стиля и т.д.). Однажды программист захочет - изменить способ хранения статьи (сделать изменения в логике приложения). - Это изменение не вызовет изменений в шаблонах. Содержание будет все еще - передаваться в шаблон таким же самым способом. - Аналогично, если верстальщик захочет полностью перепроектировать - шаблоны, это не потребует никаких изменений в прикладной логике. + статью. + + + + Название статьи, автор и сама статья - элементы, которые не + содержат никакой информации о том, как они будут представлены. Их + передают + в Smarty из приложения. + + + + + Затем верстальщик шаблона редактирует + шаблоны и использует комбинацию тэгов HTML и + тэгов шаблона, + чтобы отформатировать представление этих + переменных, + содержащих элементы типа таблиц HTML, фоновых цветов, размеров шрифта, + стилей, SVG и т.д.). + + + + + Однажды программист захочет изменить способ хранения статьи, то есть + внести изменения в логику приложения. + Это изменение не вызовет изменений в шаблонах. Содержание будет все еще + передаваться в шаблон таким же самым способом. + + + + + Аналогично, если верстальщик захочет полностью перепроектировать + шаблоны, это не потребует никаких изменений в прикладной логике. + + + + + Таким образом, программист может вносить изменения в прикладную логику + без необходимости изменения шаблонов, а дизайнер шаблонов может + вносить изменения в шаблоны без вреда для прикладной логики. + + + + Одно из предназначений Smarty - это отделение логики приложения от - представления. Конечно же, шаблоны могут содержать в себе логику, но - лишь при условии, что эта логика необходима для правильного представления - данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска - строчек в таблице, приведение букв к верхнему регистру, циклический проход - по массиву для его отображения и т.д. - всё это является примером логики - представления. Не следует думать, что Smarty заставляет вас разделять - логику приложения и представление. Smarty не видит разницы между этими - вещами, так что помещать или не помещать логику приложения в шаблоны - - решать вам. Если же вы считаете, что в шаблоне вообще - не должно быть логики, вы можете ограничиться использованием чистого - текста и переменных. + представления. + + + + + Конечно же, шаблоны могут содержать в себе логику, но + лишь при условии, что эта логика необходима для правильного представления + данных. Такие задачи, как + подключение + других шаблонов, + чередующаяся + окраска строчек в таблице, + приведение букв к верхнему + регистру, + циклический проход + по массиву для его + отображения и т.д. - всё это + примеры логики представления. + + + + + Тем не менее, не следует полагать, что Smarty заставляет вас разделять + прикладную логику и логику представления. + Smarty не видит разницы между этими вещами, так что переносить + прикладную логику в шаблоны вы можете на свой страх и риск. + + + + + Если же вы считаете, что в шаблоне вообще + не должно быть логики, вы можете ограничиться использованием чистого + текста и переменных. + + + + Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет - необходимости обрабатывать файл шаблона для каждого запроса и каждый - шаблон может пользоваться всеми преимуществами таких кэшируюших решений, - как Zend Accelerator - (&url.zend;) или PHP Accelerator - (&url.php-accelerator;). + необходимости в медленной обработке файл шаблона для каждого запроса. + Каждый шаблон может пользоваться всеми преимуществами таких компиляторов + PHP и кэшируюших решений, как + eAccelerator, + ionCube, + mmCache, + Zend Accelerator + и прочих. - Некоторые особенности Smarty: + Некоторые особенности Smarty: @@ -72,31 +135,35 @@ - Перекомпилируются только те шаблоны, которые изменились. + Перекомпилируются + только те шаблоны, которые изменились. - Вы можете создавать пользовательские функции и - модификаторы, + модификаторы переменных, что делает язык шаблонов чрезвычайно расширяемым. Настраиваемые - разделители тэгов - шаблона, то есть вы можете использовать {}, {{}}, <!--{}--> - и т.д. + {разделители} тэгов + шаблона, то есть вы можете использовать + {$foo}, {{$foo}}, + <!--{$foo}--> и т.д. Конструкции - if/elseif/else/endif - передаются обработчику PHP, так что синтаксис выражения {if ...} может - быть настолько простым или сложным, насколько вам угодно. + + {if}..{elseif}..{else}..{/if} + передаются обработчику PHP, так что синтаксис выражения + {if...} может быть настолько простым или сложным, + насколько вам угодно. @@ -111,7 +178,8 @@ Существует возможность включения PHP-кода прямо в ваш шаблон, однако обычно в этом нет необходимости - (и это не рекоммендуется), так как движок весьма гибок и расширяем. + (и это не рекоммендуется), так как движок весьма гибок и + расширяем. @@ -139,6 +207,10 @@ + + + + Установка @@ -152,42 +224,71 @@ Базовая установка - Скопируйте файлы Smarty, которые находятся в субдиректории /libs/ + Скопируйте файлы Smarty, которые находятся в субдиректории + /libs/ дистрибутива. Редактировать эти PHP-файлы НЕ СЛЕДУЕТ. Они должны использоваться всеми приложениями и изменяться только при обновлении Smarty до новой версии. + + В следующих примерах архив с исходным кодом Smarty был распакован в + + + + /usr/local/lib/Smarty-v.e.r/ + для машин под *nix + + + + + и + c:\webroot\libs\Smarty-v.e.r\ + для машин под Windows. + + + + + Необходимые файлы библиотеки Smarty Smarty использует константу PHP - SMARTY_DIR, которая указывает - полный путь к директории 'libs/' Smarty. + + SMARTY_DIR, которая указывает + полный путь к директории + libs/ из Smarty. Обычно, если ваше приложение может найти файл Smarty.class.php, то нет необходимости - устанавливать SMARTY_DIR - Smarty сам во всём разберётся. Однако, если + устанавливать + SMARTY_DIR + - Smarty сам во всём разберётся. + Однако, если Smarty.class.php не может быть найден в вашем include_path или вы не указывали абсолютный путь к - нему в приложении, то вы должны определить SMARTY_DIR вручную. - SMARTY_DIR должен включать завершающий слэш. + нему в приложении, то вы должны определить + SMARTY_DIR вручную. + SMARTY_DIR должна включать + завершающий слэш. - - Вот как следует создавать экземпляр объекта Smarty в ваших PHP-скриптах: - - - Создание обекта Smarty - + + + + Вот как следует создавать экземпляр объекта Smarty в ваших PHP-скриптах: + + ]]> - + Попробуйте выполнить вышеуказанный код. Если Вы получаете ошибку о том, @@ -210,7 +311,7 @@ $smarty = new Smarty(); - - Добавление файлов библиотеки к include_path PHP + + Добавление библиотеки в путь в файле <filename>php.ini</filename> +;;;;;;;;;;;;;;;;;;;;;;;;; +; 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\" ]]> - - Теперь, когда все файлы находятся на своих местах, пришло время - установки директорий Smarty в вашем приложении. Smarty требует - четыре директории, которые по умолчанию называются - 'templates/', - 'templates_c/', - 'configs/' и - 'cache/'. Каждая из - них определяется свойствами класса Smarty: - - $template_dir, - - $compile_dir, - - $config_dir и - - $cache_dir соответственно. - Настойчиво рекомендуется использовать разные наборы - этих директорий для каждого приложения, использующего Smarty. - - - Убедитесь, что вы знаете расположение корневой директории для документов - вашего веб-сервера. В нашем примере это /web/www.example.com/docs/. - Так как доступ к директориям Smarty получает только библиотека Smarty - и они никогда не запрашиваются напрямую веб-браузером, вам рекомендуется - вынести директории Smarty за пределы корневой - директории для документов, чтобы избежать лишнего беспокойства - относительно безопасности. - - - В нашем примере мы будем устанавливать Smarty для некоторой гостевой - книги. Приложение было выбрано только для того, чтобы использовать его - имя в именах директорий. Вы можете использовать те же настройки с любым - другим приложением, просто меняя "guestbook" на имя вашего приложения. - Мы же разместим наши директории Smarty тут: - web/www.example.com/smarty/guestbook/ - - - Вам понадобится как минимум один файл в корневой директории для документов - - это скрипт, к которому обращается веб-браузер. Мы назовём наш скрипт - 'index.php' и поместим его в поддиректорию - /guestbook/ корневой директории - для документов. - - - - Техническое замечание - - Бывает удобно настроить веб-сервер так, чтобы 'index.php' расценивался - как индексный файл дирекотрии по умолчанию, чтобы при запросе страницы - http://www.example.com/guestbook/, вызывался скрипт 'index.php' без - 'index.php' в конце адресной строки. В веб-сервере Apache вы можете - настроить это, добавив "index.php" в конец директивы - DirectoryIndex (записи разделяются пробелами), - как в примере из httpd.conf - - - DirectoryIndex - index.htm index.html index.php index.php3 default.html index.cgi - - - - - - Давайте взгляним на текущую файловую структуру: - - - - Файловая структура примера - + + + Дописывание include_path из PHP-скрипта используя + <literal><ulink url="&url.e-accel;">ini_set()</ulink></literal> + + ]]> - + - Smarty понадобятся права на запись - (пользователей Windows это не касается) в - - $compile_dir и - - $cache_dir, - так что убедитесь, что у веб-сервера есть эти права. - Обычно сервер запущен от имени пользователя "nobody" группы "nobody". - Для пользователей OS X пользователем по умолчанию является "www" - группы "www". Если вы используете Apache, вы можете заглянуть в ваш файл - httpd.conf (который обычно расположен в "/usr/local/apache/conf/") чтобы - узнать, какой пользователь и группа используются. + Теперь, когда все файлы находятся на своих местах, пришло время + установки директорий Smarty в вашем приложении. + + + + + Smarty нужно четыре директории, которые по умолчанию называются + templates/, + templates_c/, + configs/ и + cache/ + + + + + Каждая из них определяется свойствами класса Smarty: + + $template_dir, + + $compile_dir, + + $config_dir и + + $cache_dir соответственно. + Настойчиво рекомендуется использовать разные наборы + этих директорий для каждого приложения, использующего Smarty. + + + + + + В нашем примере мы будем устанавливать Smarty для некоторой гостевой + книги. Приложение было выбрано только для того, чтобы использовать его + имя в именах директорий. Вы можете использовать те же настройки с любым + другим приложением, просто меняя guestbook/ + на имя вашего приложения. - Установка прав доступа к файлам + Вот как выглядит файловая структура + + + + + + + Убедитесь, что вы знаете расположение корневой директории документов + вашего веб-сервера. В следующих примерах, корневой директорией документов + является /web/www.example.com/guestbook/htdocs/. + Доступ к директориям Smarty происходит только из библиотеки Smarty и + никогда не происходит через веб-браузер. Поэтому, в целях безопасности + рекоммендуется располагать эти директории за пределами + корневой директории документов сервера, хотя это и не обязательно. + + + Вам понадобиться как минимум один файл внутри корневой директории + документов - это скрипт, вызываемый веб-браузером. Мы назовем наш скрипт + index.php и положим его в поддиректорию внутри + корневой директории документов /htdocs/. + + + + Smarty понадобятся права на запись + (пользователей Windows это не касается) в директории + + $compile_dir и + + $cache_dir + (templates_c/ и + cache/), + так что убедитесь, что у веб-сервера есть эти права. + + + + Обычно это пользователь nobody и группа + nobody. Для пользователей OS X, пользователь по умолчанию + - это www и группа - www. + Если вы используете Apache, вы можете узнать используемые + имя пользователя и группу из файла httpd.conf. + + + + + + Установка прав доступа к файлам и директориям - Техническое замечание + Примечание - chmod 770 даёт достаточно жесткую защиту - разрешает только пользователю - "nobody" и группе "nobody" доступ на чтение и запись в эти директории. + chmod 770 даёт достаточно жесткую защиту - + разрешает только пользователю + nobody и группе nobody доступ + на чтение и запись в эти директории. Если вы хотите открыть доступ на чтение для всех (обычно для собственного - удобства при просмотре этих файлов), вы можете использовать значение 775. + удобства при просмотре этих файлов), вы можете использовать значение + 775. - Нам необходимо создать файл 'index.tpl', которы будет загружаться Smarty. + Нам необходимо создать файл index.tpl, + которы будет загружаться Smarty. Он будет расположен в - $template_dir. + + $template_dir. - Редактирование /web/www.example.com/smarty/guestbook/templates/index.tpl + /web/www.example.com/guestbook/templates/index.tpl Техническое замечание - {* Smarty *} - это + {* Smarty *} - это комментарий шаблона. Он не является обязательным, но его размещение в начале каждого шаблона является хорошим тоном. Это позволяет проще различать файлы независимо @@ -417,28 +540,32 @@ chmod 770 /web/www.example.com/smarty/guestbook/cache/ - Теперь давайте отредактируем 'index.php'. Мы создадим экземпляр Smarty, + Теперь давайте отредактируем index.php. + Мы создадим экземпляр Smarty, присвоим значение переменной шаблона и - отобразим файл 'index.tpl'. + отобразим файл + index.tpl. - Редактироение /web/www.example.com/docs/guestbook/index.php + /web/www.example.com/docs/guestbook/index.php template_dir = '/web/www.example.com/smarty/guestbook/templates/'; -$smarty->compile_dir = '/web/www.example.com/smarty/guestbook/templates_c/'; -$smarty->config_dir = '/web/www.example.com/smarty/guestbook/configs/'; -$smarty->cache_dir = '/web/www.example.com/smarty/guestbook/cache/'; +$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->assign('name', 'Катруська'); + +//** раскомментируйте следующую строку для отображения отладочной консоли +//$smarty->debugging = true; $smarty->display('index.tpl'); ?> @@ -447,11 +574,11 @@ $smarty->display('index.tpl'); - Техническое замечание + Примечание В нашем примере мы устанавливаем абсолютные пути ко всем директориям Smarty. Если /web/www.example.com/smarty/guestbook/ + class="directory">/web/www.example.com/guestbook/ находится в include_path вашего PHP, то эти настройки не обязательны. Тем не менее, более эффективным и (из опыта) менее глюкоопасным является использование абсолютных путей. Это придаст уверенность в том, что Smarty @@ -462,7 +589,7 @@ $smarty->display('index.tpl'); Теперь перейдите к файлу index.php при помощи вашего веб-браузера. Вы должны увидеть надпись - "Привет, Кристина! Добро пожаловать в Smarty!" + "Привет, Катруська! Добро пожаловать в Smarty!" Вы закончили базовую установку Smarty! @@ -477,18 +604,23 @@ $smarty->display('index.tpl'); сперва прочитайте её. - Немного более гибким способом установки Smarty является наследование класса + Немного более гибким способом установки Smarty является + наследование класса и инициализация вашего собственного окружения Smarty. Таким образом, вместо того, чтобы постоянно устанавливать пути директорий, присваивать одни и те же переменные и т.д., мы можем всё это сделать в одном месте. - Давайте создадим новую директорию "/php/includes/guestbook/",а в ней - + + + Давайте создадим новую директорию /php/includes/guestbook/,а в ней - новый файл, который назовем setup.php. По условиям - нашего примера, "/php/includes" находится в include_path. Убедитесь, чтобы + нашего примера, /php/includes + находится в include_path. Убедитесь, чтобы то же самое было и у вас, или используетй абсолютные пути. - Редактирование /php/includes/guestbook/setup.php + /php/includes/guestbook/setup.php Smarty(); - $this->template_dir = '/web/www.example.com/smarty/guestbook/templates/'; - $this->compile_dir = '/web/www.example.com/smarty/guestbook/templates_c/'; - $this->config_dir = '/web/www.example.com/smarty/guestbook/configs/'; - $this->cache_dir = '/web/www.example.com/smarty/guestbook/cache/'; + $this->template_dir = '/web/www.example.com/guestbook/templates/'; + $this->compile_dir = '/web/www.example.com/guestbook/templates_c/'; + $this->config_dir = '/web/www.example.com/guestbook/configs/'; + $this->cache_dir = '/web/www.example.com/guestbook/cache/'; $this->caching = true; $this->assign('app_name', 'Guest Book'); @@ -527,18 +659,19 @@ class Smarty_GuestBook extends Smarty { - Теперь давайте изменим index.php, чтобы он использовал setup.php: + Теперь давайте изменим index.php, + чтобы он использовал setup.php: - Редактирование /web/www.example.com/docs/guestbook/index.php + /web/www.example.com/guestbook/htdocs/index.php assign('name','Ned'); @@ -550,8 +683,8 @@ $smarty->display('index.tpl'); Теперь вы видите, что создать экземпляр Smarty довольно просто - нужно лишь - использовать Smarty_GuestBook, который автоматически инициализирует все - настройки для нашего приложения. + использовать Smarty_GuestBook, который автоматически + инициализирует все настройки для нашего приложения. diff --git a/docs/ru/language-snippets.ent b/docs/ru/language-snippets.ent index 0c16c8fa..7816d05b 100644 --- a/docs/ru/language-snippets.ent +++ b/docs/ru/language-snippets.ent @@ -1,6 +1,6 @@ - + Техническое замечание @@ -9,7 +9,7 @@ поэтому если вы объединяете массивы с числовыми индексами, то они могут наложиться друг на друга или привести к непоследовательному порядку ключей. Результат отличается от действия функции PHP - array_merge(), + array_merge(), которая заново нумерует элементы в массиве с числовоми ключами. '> @@ -23,13 +23,38 @@ Другое применение $compile_id можно найти, если вы используете несколько - $template_dir, + $template_dir, но только одну - $compile_dir. + $compile_dir. Устанавливайте свой compile_id для каждой - $template_dir, + $template_dir, иначе шаблоны с одинаковыми именами будут сохраняться поверх друг друга. Также вы можете один раз указать - $compile_id, + $compile_id, вместо того, чтобы каждый раз передавать его при вызове этой функции. '> + + + Callback-функция PHP может быть: + + + + Либо строкой, содержащей имя функции. + + + + + Либо массивом вида array(&$object, $method), + где &$object - ссылка на объек, а + $method - строка, содержащая имя метода. + + + + + Либо массивом вида array($class, $method), + где $class - строка, содержащая имя класса, а + $method - строка, содержащая имя метода этого класса. + + + +'>